Docker玩转Rhadoop
原文地址:http://wanghaisheng.github.io/2014/12/20/run-rhadoop-on-docker-cn/
Docker 玩轉(zhuǎn) RHadoop
網(wǎng)絡(luò)上已經(jīng)有了太多的 RHadoop 的安裝使用的教程,鑒于其中的配置配置繁復(fù),對(duì)軟件版本的要求又極其苛刻,故筆者想用時(shí)下熱門的 docker 來嘗嘗鮮,以下是心路歷程,供看客參考,希望能給大家一些幫助。
1、軟硬件環(huán)境
操作系統(tǒng):OXS 10.10.1
docker安裝版本:boot2docker(推薦大家使用https://github.com/unixorn/docker-helpers.zshplugin該插件可以省去大家不少功夫)
Hadoop鏡像:sequenceiq/hadoop-ubuntu:2.6.0
2、事前準(zhǔn)備
1、考慮到GFW的因素,擬將 sequenceiq/hadoop-ubuntu:2.6.0 鏡像中的源替換成163的,順便添加R語言安裝的source
新建source.list
| 1 2 3 4 5 6 7 8 9 10 11 | deb http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse deb http://cran.r-project.org/bin/linux/ubuntu trusty/ |
2、下載好RHadoop的幾個(gè) tar.gz 安裝包,版本以自己安裝日期的最新版本號(hào)為準(zhǔn)
| 1 2 3 | rmr-2.3.3 rhdfs-1.0.8 rhbase-1.2.1 |
3、測(cè)試過程中會(huì)用到的測(cè)試數(shù)據(jù) 主要是wordcount程序中
| 1 | subl part-m-00000 |
數(shù)據(jù)內(nèi)容如下所示
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 10,3,tsinghua university,2004-05-26 15:21:00.0 23,4007,北京第一七一中學(xué),2004-05-31 06:51:53.0 51,4016,大連理工大學(xué),2004-05-27 09:38:31.0 89,4017,Amherst College,2004-06-01 16:18:56.0 92,4017,斯坦福大學(xué),2012-11-28 10:33:25.0 99,4017,Stanford University Graduate School of Business,2013-02-19 12:17:15.0 113,4017,Stanford University,2013-02-19 12:17:15.0 123,4019,St Paul's Co-educational College - Hong Kong,2004-05-27 18:04:17.0 138,4019,香港蘇浙小學(xué),2004-05-27 18:59:58.0 172,4020,University,2004-05-27 19:14:34.0 182,4026,ff,2004-05-28 04:42:37.0 183,4026,ff,2004-05-28 04:42:37.0 189,4033,tsinghua,2011-09-14 12:00:38.0 195,4035,ba,2004-05-31 07:10:24.0 196,4035,ma,2004-05-31 07:10:24.0 197,4035,southampton university,2013-01-07 15:35:18.0 246,4067,美國史丹佛大學(xué),2004-06-12 10:42:10.0 254,4067,美國史丹佛大學(xué),2004-06-12 10:42:10.0 255,4067,美國休士頓大學(xué),2004-06-12 10:42:10.0 257,4068,清華大學(xué),2004-06-12 10:42:10.0 258,4068,北京八中,2004-06-12 17:34:02.0 262,4068,香港中文大學(xué),2004-06-12 17:34:02.0 310,4070,首都師范大學(xué)初等教育學(xué)院,2004-06-14 15:35:52.0 312,4070,北京師范大學(xué)經(jīng)濟(jì)學(xué)院,2004-06-14 15:35:52.0 |
4、這些文件準(zhǔn)備好了之后,最好放置在宿主機(jī)的某個(gè)文件夾下,比如我這里放在
| 1 | /Users/wanghaisheng/docker |
5、請(qǐng)確保docker成功安裝,不同操作系統(tǒng)的安裝教程請(qǐng)前往國內(nèi)docker中文社區(qū)尋找答案
docker中文社區(qū)站
docker.cn?
DockerPool
3、Hadoop 單機(jī)環(huán)境
1、從遠(yuǎn)端服務(wù)器拉取Hadoop鏡像文件 由于GFW和網(wǎng)絡(luò)原因,可能耗時(shí)較長 請(qǐng)耐心等待
| 1 | ~ docker pull sequenceiq/hadoop-ubuntu:2.6.0 |
2、把之前準(zhǔn)備好的文件夾掛載到我們要啟動(dòng)的單機(jī) Hadoop 容器中去,這里筆者比較懶,各位可以自行用喜歡的目錄替換容器中的掛載目錄(冒號(hào)后面的部分/Users/wanghaisheng/docker)
| 1 | ~ docker run -i -t -v /Users/wanghaisheng/docker:/Users/wanghaisheng/docker sequenceiq/hadoop-ubuntu:2.6.0 /etc/bootstrap.sh -bash |
4、R的安裝
1、修改源文件
| 1 2 3 | cp /etc/apt/sources.list /etc/apt/sources.list_backup rm /etc/apt/sources.list cp /Users/wanghaisheng/docker/source.list /etc/apt/sources.list |
2、從CRAN安裝R
CRAN中具有最新的R版本,所以一般建議利用CRAN進(jìn)行R的安裝。其基本步驟為:
| 1 | ~ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E084DAB9 |
然后需要添加CRAN源到/etc/apt/sources.list:
| 1 | deb http://cran.r-project.org/bin/linux/ubuntu xxx/ |
其中xxx為你的Ubuntu版本,這里的話就是trusty。同時(shí)CRAN的地址可以用任意你喜歡的鏡像替換。這里我們?cè)趕ource.list中已經(jīng)事先準(zhǔn)備好了,直接進(jìn)入下一步
| 1 2 | ~ sudo apt-get update ~ sudo apt-get install r-base r-base-dev |
5、R的配置
1、需要運(yùn)行如下命令,讓R與系統(tǒng)中安裝好得jdk環(huán)境關(guān)聯(lián)起來
| 1 | ~ R CMD javareconf |
2、啟動(dòng)啟動(dòng)R程序
| 1 | ~ R |
3、安裝RHadoop會(huì)使用到的依賴包
| 1 2 3 4 5 6 7 8 9 | install.packages("rJava") install.packages("reshape2") install.packages("Rcpp") install.packages("iterators") install.packages("itertools") install.packages("digest") install.packages("RJSONIO") install.packages("functional") install.packages("caTools") |
6、rhdfs和rmr2的安裝
1、配置環(huán)境變量,網(wǎng)絡(luò)上大量的例子使用的是hadoop1.0.3,我們使用的是Apache2.6,這里的HADOOP_STREAMING路徑可能大不一樣,/hadoop-1.0.3/contrib/streaming/hadoop-streaming-1.0.3.jar),PATH這里要添加hadoop的安裝路徑的bin目錄,否則后續(xù)使用hadoop命令會(huì)出現(xiàn)not found
| 1 2 3 4 5 6 7 8 | ~ vi /etc/environment HADOOP_CMD=/usr/local/hadoop/bin/hadoop HADOOP_STREAMING=/usr/local/hadoop/share/hadoop/tools/lib/hadoop-streaming-2.6.0.jar PATH=$PATH:/usr/local/hadoop/bin ~ source /etc/environment |
2、安裝rhdfs
| 1 | ~ R CMD INSTALL /Users/wanghaisheng/docker/rhdfs_1.0.8.tar.gz |
3、安裝rmr2
| 1 | ~ R CMD INSTALL /Users/wanghaisheng/docker/rmr2_3.3.0.tar.gz |
7、測(cè)試rmr2-wordcount
1、啟動(dòng)R
2、載入rmr2包
| 1 | library(rmr2) |
3、執(zhí)行如下命令
| 1 2 3 | > small.ints = to.dfs(1:10) > mapreduce(input = small.ints, map = function(k, v) cbind(v, v^2)) > from.dfs("/tmp/file1ea36ae45f9f") |
這里要注意的是 這個(gè)臨時(shí)文件的名字是變化的 請(qǐng)自己根據(jù)上一條命令的返回信息進(jìn)行替換
8、測(cè)試rmr2-MapReduce的R語言程序
1、首先,是基本的hdfs的文件操作。查看hdfs文件目錄
hadoop的命令:hadoop fs -ls /usr
R語言函數(shù):hdfs.ls(“/usr/“)
你會(huì)發(fā)現(xiàn)什么數(shù)據(jù)都沒有,這時(shí)候把事先準(zhǔn)備好的測(cè)試數(shù)據(jù)拿進(jìn)來好了
| 1 2 3 4 5 6 7 8 | hadoop fs -mkdir /user/hdfs hadoop fs -mkdir /user/hdfs/o_same_school/ hadoop fs -rm /user/hdfs/o_same_school/part-m-00000 hadoop fs -put /Users/wanghaisheng/docker/part-m-00000 /user/hdfs/o_same_school/ hadoop fs -cat /user/hdfs/o_same_school/part-m-00000 看到了一堆數(shù)據(jù)了把! |
2、啟動(dòng)R程序
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | > library(rhdfs) Loading required package: rJava HADOOP_CMD=/root/hadoop/hadoop-1.0.3/bin/hadoop Be sure to run hdfs.init() > hdfs.init() hdfs.ls("/user/") library(rmr2) > input<- '/user/hdfs/o_same_school/part-m-00000' > wordcount = function(input, output = NULL, pattern = " "){ wc.map = function(., lines) { keyval(unlist( strsplit( x = lines,split = pattern)),1) } wc.reduce =function(word, counts ) { keyval(word, sum(counts)) } mapreduce(input = input ,output = output, input.format = "text", map = wc.map, reduce = wc.reduce,combine = T) } > wordcount(input) > from.dfs("/tmp/file24053f4a0d65") |
這里要注意的是 這個(gè)臨時(shí)文件的名字是變化的 請(qǐng)自己根據(jù)上一條命令的返回信息進(jìn)行替換
參考文獻(xiàn)
1.Linux環(huán)境下RHadoop配置筆記
2.RHadoop實(shí)踐系列文章
總結(jié)
以上是生活随笔為你收集整理的Docker玩转Rhadoop的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spss因子分析结果解读_【SPSS数据
- 下一篇: 码支付源码最新版_码支付源码,云端已本地