登录  | 加入社区

黑狼游客您好!登录后享受更多精彩

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

查看: 750|回复: 0

大数据算法库丨简明扼要版

[复制链接]

179

主题

179

帖子

0

现金

黑狼菜鸟

Rank: 1

积分
0
发表于 2019-3-3 04:26:54 | 显示全部楼层 |阅读模式 来自 亚太地区
    
yOT38KdlTo2K222L.jpg





    随着大数据的日益发展,呆板学习也成为现在大数据分析范畴的一个热门内容。实在,在平常的学习和生存中也常常会用到各种各样的呆板学习算法,现实上基于Python、Java等的许多呆板学习算法根本都被前人实现过许多次了。这些算法在网上可以找到许多,然而每每存在许多“脏”大概“乱”的开源代码。


       在如许的配景下,我们总结了以下几个成熟稳固的开源算法库,这些开源库大多与垃圾邮件过滤、人脸辨认、保举引擎相干。它们大多数基于现今最盛行的语言以及平台,推广以及扩展了呆板学习范畴的许多紧张算法。从中,不光可以找到LDA等主题模子,也可以找到HMM等隐马尔可夫模子。这些模子都是应用范畴的热门,也是研究者最必要的。


1.RHadoop


       RHadoop是Recolution Analytics下的一个开源库,它可以将统计语言R与Hadoop联合起来,与Rhipe雷同,也可以在Map Reduce模式下实行R函数。现在,该项目包罗以下几个R packages:plyrmr包可以在Hadoop中对大数据集举行一些常用的数据整理操纵。rmr包提供了一些让R和Hadoop联互助业的函数。rdfs包提供了一些函数来毗连R和分布式文件体系(HDFS)。rhbase包中的函数则能毗连R和HBase。


       此中,Hadoop重要用来存储海量数据,R语言完成Map Reduce算法,用来替换Java的Map Reduce实现。有了RHadoop可以让广大的R语言爱好者,有更强盛的工具处置惩罚大数据。1GB、10GB、100GB、TB、PB由于大数据所带来的单机性能题目,大概会一去不复返了。对于单独的R语言爱好者、Java爱好者,大概Hadoop爱好者来说,同时具备三种语言知识并不轻易。


RHadoop的安装(rhdfs与rmr2)


       所谓的RHadoop安装并不是一个别的的单独的software,而是R package:rhdfs、rmr2、rhbase。从名字不难推断每个包的用途,rhdfs是对应HDFS的R interface,rmr2是对应Map Reduce,rhbase是对应HBase。下载网址为http://github.com/RevolutionAnalytics/RHadoop/wiki/Downloads,别的还必要从地点(http://cran.r-project.org/src/base/R-3/)下载R语言的tar包。必要留意的是,在安装RHadoop之前先安装并启动Hadoop情况,包罗hdfs、hbase和thrift等,同时也发起安装C++或Python库。


       在centos6.5上安装R,然后安装相干依靠包:
 
        #yum install gcc-gfortran 
        #yum install gcc gcc-c++ 
        #yum install readline-devel 
        #yum install lib Xt-devel 
        # tar xvf R-3.2.3.tar.gz 
        # cd R-3.2.3 
        # ./configure 
        # make 
        # make install


       确认Java情况变量:RHadoop依靠于r Java包,安装r Java前确认已经设置了Java情况变量,然后使用R对jvm创建毗连。
 
        [root@dataserver R-3.2.3]# cat /etc/profile末端添加 
        ######################################## 
        export JAVA_HOME=/usr/java/jdk1.7.0_79 
        export JRE_HOME=/usr/java/jdk1.7.0_79/jre 
        export PATH=/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/ 
        root/bin 
        export CLASSPATH=.:/lib/dt.jar:/lib/tool.jar 
        export HADOOP_CMD=/usr/bin/hadoop 
        export HADOOP_STREAMING=/usr/hdp/current/hadoop-mapreduce-client/ 
        hadoop-streaming.jar 
        export HADOOP_HOME=/usr/hdp/current/hadoop-client 
        export JAVA_HOME JRE_HOME PATH CLASSPATH 
        ######################################## 
        [root@dataserver R-3.2.3]# R CMD javareconf


安装相干的依靠包,确保RHadoop软件包能正常利用。
 
        [root@dataserver R-3.2.3]# R 
        > install.packages("r Java") 
        > install.packages("reshape2") 
        > install.packages("Rcpp") 
        > install.packages("iterators") 
        > install.packages("itertools") 
        > install.packages("digest") 
        > install.packages("RJSONIO") 
        > install.packages("functional") 
        > install.packages("bitops") 
        > install.packages("ca Tools") 
        > quit()
大概
 
        install.packages(c("r Java","Rcpp","RJSONIO","bitops","digest","functional", 
        "stringr","plyr","reshape2","ca Tools"))
安装RHadoop软件包
 
        [root@dataserver R-3.2.3]# export HADOOP_CMD=/usr/bin/hadoop 
        [root@dataserver R-3.2.3]# export HADOOP_STREAMING=/usr/hdp/current/ 
        hadoop-mapreduce-client/hadoop-streaming.jar 
        [root@dataserver R-3.0.2]# R CMD INSTALL rhdfs_1.0.8.tar.gz 
        [root@dataserver R-3.0.2]# R CMD INSTALL rmr2_3.3.1.tar.gz 


         [root@dataserver R-3.0.2]# R CMD INSTALL rhbase_1.2.1.tar.gz

       在以上过程中大概会产生一些题目,比方进入R之后用library载入rhdfs大概rmr2时发现体系提示不存在该库,这里碰到的题目有几点办理方法:


❑R语言目次并没有设置成当前的/home/hadoop/software/R,而是最初体系默认的/usr/local/R,导致rhdfs、r Java、rmr2以及那些依靠项都装到体系默认文件路径里了,以是必要做的一件事是通过cp下令把默认路径中的library文件夹拷到目的路径library中。


❑假如当前用户没有root权限,进入R中有些操纵是无法乐成的,以是最好照旧在/etc/sudoer中给本身的用户设上全部权限。


利用RHadoop软件包
 
        [root@dataserver R-3.2.3]# R 
        > library(rhdfs) 
        > hdfs.init() 
        > hdfs.ls("/") 
        [root@dataserver R-3.2.3]# export HADOOP_HOME=/usr/hdp/current/ 
        Hadoop-client 
        > library(rmr2)


Map Reduce的R语言步伐
 
        > small.ints = to.dfs(1:10) 
        > mapreduce(input = small.ints,map = function(k,v)cbind(v,v^2)) 
        > from.dfs("/tmp/Rtmp Wnzxl4/file5deb791fcbd5")


       由于Map Reduce只能访问HDFS文件体系,以是先要用to.dfs把数据存储到HDFS文件体系中。Map Reduce的运算效果再用from.dfs函数从HDFS文件体系中取出。别的,在实行from.dfs之前体系会在屏幕中打印出output文件的位置。


rhdfs包的利用


进入R情况之后,输入如下下令操纵:
 
        > library(rhdfs)
/*乐成启动后会提示你hdfs.init()必要开启,实行以下语句即可*/
 
        > hdfs.init()
rhdfs检察Hadoop目次
 
        > hdfs.ls("/usr/")
检察Hadoop数据文件(在hadoop情况)
 
        hadoop fs -cat /home/hadoop/input/f1.txt



在RHadoop实现的呆板学习算法

       RHadoop并没有像其他算法库那样有开源的算法模子,但是它可以实现Hadoop的map和reduce操纵。RHadoop可以将map和reduce实现为R中的函数(function),从而实现分布式算法。以是,RHadoop必要步伐员本身开辟算法代码。



RHadoop的KMeans算法先容:
起首来看一下KEmans的RHadoop实当代码,如图1所示。


R5DdcC2zQAtF4l5i.jpg

 
图1 RHadoop实现KMeans


       从图3中可以看到KMeans的实现方式和R语言单机情况下是一样的,KMeans.mr是一个函数(function),该函数实现KMeans算法。RHadoop与单机版R最大的差别就是代码必须是分布式的,也就是说必要步伐员编写map和reduce函数,如图2方框中所示。由于是在Hadoop集群上运行,以是必要加载rjava、rhdfs、rmr2这几个包。
 

It2m7hVz7Oz4Vtci.jpg



 图2 RHadoop分布式KMeans改写


DecyC59Vz9YyBIDd.jpg

 
 图3 RHadoop分布式KMeans运算效果



       KMeans算法运行效果:对已经编写完成的RHadoop代码,可以直接在Hadoop集群的R控制台中运行,如图3所示。


       与调用单机版的R函数一样,只必要初始化并调用该函数,即实现了对数据的分布式算法。全部的盘算效果都生存在变量w(可以恣意定名)之中。KMeans算法的返回效果并不黑白常大。这和R语言单机版的KMeans算法一样,如图4所示。
 

JX7CFc7FZUHy881F.jpg

图4 RHadoop分布式KMeans聚类标签和效果属性变量


<span style="font-size: 14px;">
接下来表明调用KMeans.mr函数时的各参数设置:
 
        ## run the KMeans.mr function 
        w 




上一篇:LinuxCentOS体系下载安装教程
下一篇:Centos7安装和设置ElasticSearch入门小白
您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

 

QQ|申请友链|小黑屋|手机版|Hlshell Inc. ( 豫ICP备16002110号-5 )

GMT+8, 2024-5-7 20:57 , Processed in 0.109920 second(s), 47 queries .

HLShell有权修改版权声明内容,如有任何爭議,HLShell將保留最終決定權!

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表