Docker玩转Rhadoop
原文地址:http://wanghaisheng.github.io/2014/12/20/run-rhadoop-on-docker-cn/
Docker 玩轉 RHadoop
網絡上已經有了太多的 RHadoop 的安裝使用的教程,鑒于其中的配置配置繁復,對軟件版本的要求又極其苛刻,故筆者想用時下熱門的 docker 來嘗嘗鮮,以下是心路歷程,供看客參考,希望能給大家一些幫助。
1、軟硬件環境
操作系統:OXS 10.10.1
docker安裝版本:boot2docker(推薦大家使用https://github.com/unixorn/docker-helpers.zshplugin該插件可以省去大家不少功夫)
Hadoop鏡像:sequenceiq/hadoop-ubuntu:2.6.0
2、事前準備
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的幾個 tar.gz 安裝包,版本以自己安裝日期的最新版本號為準
| 1 2 3 | rmr-2.3.3 rhdfs-1.0.8 rhbase-1.2.1 |
3、測試過程中會用到的測試數據 主要是wordcount程序中
| 1 | subl part-m-00000 |
數據內容如下所示
| 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,北京第一七一中學,2004-05-31 06:51:53.0 51,4016,大連理工大學,2004-05-27 09:38:31.0 89,4017,Amherst College,2004-06-01 16:18:56.0 92,4017,斯坦福大學,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,香港蘇浙小學,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,美國史丹佛大學,2004-06-12 10:42:10.0 254,4067,美國史丹佛大學,2004-06-12 10:42:10.0 255,4067,美國休士頓大學,2004-06-12 10:42:10.0 257,4068,清華大學,2004-06-12 10:42:10.0 258,4068,北京八中,2004-06-12 17:34:02.0 262,4068,香港中文大學,2004-06-12 17:34:02.0 310,4070,首都師范大學初等教育學院,2004-06-14 15:35:52.0 312,4070,北京師范大學經濟學院,2004-06-14 15:35:52.0 |
4、這些文件準備好了之后,最好放置在宿主機的某個文件夾下,比如我這里放在
| 1 | /Users/wanghaisheng/docker |
5、請確保docker成功安裝,不同操作系統的安裝教程請前往國內docker中文社區尋找答案
docker中文社區站
docker.cn?
DockerPool
3、Hadoop 單機環境
1、從遠端服務器拉取Hadoop鏡像文件 由于GFW和網絡原因,可能耗時較長 請耐心等待
| 1 | ~ docker pull sequenceiq/hadoop-ubuntu:2.6.0 |
2、把之前準備好的文件夾掛載到我們要啟動的單機 Hadoop 容器中去,這里筆者比較懶,各位可以自行用喜歡的目錄替換容器中的掛載目錄(冒號后面的部分/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進行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。同時CRAN的地址可以用任意你喜歡的鏡像替換。這里我們在source.list中已經事先準備好了,直接進入下一步
| 1 2 | ~ sudo apt-get update ~ sudo apt-get install r-base r-base-dev |
5、R的配置
1、需要運行如下命令,讓R與系統中安裝好得jdk環境關聯起來
| 1 | ~ R CMD javareconf |
2、啟動啟動R程序
| 1 | ~ R |
3、安裝RHadoop會使用到的依賴包
| 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、配置環境變量,網絡上大量的例子使用的是hadoop1.0.3,我們使用的是Apache2.6,這里的HADOOP_STREAMING路徑可能大不一樣,/hadoop-1.0.3/contrib/streaming/hadoop-streaming-1.0.3.jar),PATH這里要添加hadoop的安裝路徑的bin目錄,否則后續使用hadoop命令會出現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、測試rmr2-wordcount
1、啟動R
2、載入rmr2包
| 1 | library(rmr2) |
3、執行如下命令
| 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") |
這里要注意的是 這個臨時文件的名字是變化的 請自己根據上一條命令的返回信息進行替換
8、測試rmr2-MapReduce的R語言程序
1、首先,是基本的hdfs的文件操作。查看hdfs文件目錄
hadoop的命令:hadoop fs -ls /usr
R語言函數:hdfs.ls(“/usr/“)
你會發現什么數據都沒有,這時候把事先準備好的測試數據拿進來好了
| 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 看到了一堆數據了把! |
2、啟動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") |
這里要注意的是 這個臨時文件的名字是變化的 請自己根據上一條命令的返回信息進行替換
參考文獻
1.Linux環境下RHadoop配置筆記
2.RHadoop實踐系列文章
總結
以上是生活随笔為你收集整理的Docker玩转Rhadoop的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spss因子分析结果解读_【SPSS数据
- 下一篇: 码支付源码最新版_码支付源码,云端已本地