Ubuntu中安装配置hadoop 2.6.0并编译运行WordCount

来源:互联网 发布:国外大数据产业园 编辑:程序博客网 时间:2024/05/29 18:33

本篇文章记录了在Ubuntu14.04中安装hadoop 2.6.0的过程(选择Pseudo-Distributed Operation),以及编译执行WordCout. WordCount是一个统计词频的小程序,常常作为Hadoop的示例程序出现.

1安装hadoop2.6.0

网上有很多安装的过程,按着步骤做即可,一般不会出现问题.强烈建议按照官网的Tutorial安装[1].安装步骤如下:
1) 安装java以及配置环境变量
2) 配置Hadoop用户,为了管理方便
useradd -m hadoop
passwd hadoop
3) 下载hadoop-2.6.0
4) 配置SSH,为了结点之间通信不需要重复输入密码(只需第一次登陆时需要)
5) 修改配置文件etc/hadoop/core-site.xml, etc/hadoop/hdfs-site.xml
6) 设置HDFS
7) 启动hdfs和yarn
8) 运行样例程序,检测安装与配置是否正确

2手动编译运行WordCount程序

    如果要使用hadoop2.6.0运行程序,需要知道Hadoop运行程序的过程(和要求),这里只是简单说明,具体内容可查找相关资料.    总得来说,hadoop运行程序需要代码文件(jar文件)和数据文件(或目录),输出内容只需指定输出目录,并且该目录为空目录,非否会报错误.例如我们这里使用的WordCount程序,编译好可运行的jar文件WordCount.jar,输入目录为/user/hadoop/wordcount/input,输出目录为/user/hadoop/wordcount/output,则执行指令为bin/hadoop jar WordCount.jar /user/hadoop/wordcount/input /user/hadoop/wordcount/output. 其中wordCount.jar存放在本地文件系统中,所以地址是本地文件系统的地址,而输入和输出目录为hdfs的目录.    从上述说明可知,hadoop运行程序需要上传数据文件和代码文件,上传数据文件是"显式"上传,即需要使用hdfs的文件系统指令,上传代码文件是"隐式"操作,即通过指令bin/hadoop完成,同时运行程序.    我在hadoop目录下新建了一个文件夹workspace,用于存放wordcount程序.目录格式为hadoop|-------worksapce(wordcount)    1)上传数据可以使用bin/hdfs dfs -put src des或者是bin/hdfs dfs -copyFromLocal src des2)编译可执行java的程序过程如下,使用到的依赖包为hadoop-mapreduce-client-core-2.6.0.jar和hadoop-common-2.6.0.jar,该程序的目录为:    workspace(WordCount)    |-------src    |-------|-------me    |-------|-------|-------sl    |-------|-------|-------|-------WordCount.java    |-------bin    |-------|-------me    |-------|-------|-------sl    |-------|-------|-------|-------WordCount.class    |-------META-INF    |-------|-------MANIFEST.MF程序的代码放在src目录下,WordCount使用的package为package me.sl;bin目录为了存放编译好的class文件;META-INF存在配置文件,其中MANIFEST.MF为可执行jar文件的配置文件,有一定的格式要求;(1)当程序写好之后,我们使用javac编译,使用的指令为javac -cp ../share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.6.0.jar:../share/hadoop/common/hadoop-common-2.6.0.jar src/me/sl/*..java -d ./bin其中javac 为java的编译指令,-cp表示 -classpath,后边跟的是程序引用的外部jar文件,多个jar文件使用符号:连接,"../share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.6.0.jar:../share/hadoop/common/hadoop-common-2.6.0.jar"分别表示两个jar文件在本地文件系统的绝对位置;src/me/sl/*.java表示需要编译的java文件;-d表示编译输出路径,即编译好的class文件存放在哪里.(2)编写MANIFEST.MF文件,文件内容如下Manifest-Version: 1.0Main-Class: me.sl.WordCount需要注意的是,文件的最后必须有回车换行,即,保留一个空行.(3)打包文件jar cfm WordCount.jar META-INF/MENIFEST.MF me    jar表示打包指令    cfm为参数,具体意义可查看指令的使用说明    WordCount.jar表示打包后文件的名字    META-INF/MENIFEST.MF表示配置文件所在位置    me表示需要打包的(class文件)目录(4)如果已经将数据文件上传,则可以上传可执行代码文件并执行,使用指令bin/hadoop jar workspace/bin/WordCount.jar /user/hadoop/wordcount/input /user/hadoop/wordcount/output

3 查看程序的运行结果

bin/hdfs dfs -cat /user/hadoop/wordcount/out/part-r-00000

备注,
如果不使用META-INF/MENIFEST.MF配置文件,也可以运行程序
打包指令为jar cf WordCount.jar me
运行程序时需要显式给出程序的入口地址
bin/hadoop jar workspace/bin/WordCount.jar me.sl.WordCount /user/hadoop/wordcount/input /user/hadoop/wordcount/output

参考
[1]http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/SingleCluster.html
[2]http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HDFSCommands.html#User_Commands
[3]http://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html
[4]http://www.cnblogs.com/xia520pi/archive/2012/05/16/2504205.html
[5]http://www.cloudera.com/content/cloudera/en/documentation/HadoopTutorial/CDH4/Hadoop-Tutorial/ht_wordcount1.html
[6]http://docs.oracle.com/javase/tutorial/deployment/jar/appman.html
[7]http://blog.csdn.net/pleasurelong/article/details/14518667
[8]深入理解大数据-大数据处理与编程实践 2014.8 第一版 黄宜华
[9]http://wiki.apache.org/hadoop/GettingStartedWithHadoop
[10] hadoop命令行编译并运行hadoop例子WordCount http://www.cnblogs.com/zhengyuhong/p/3915605.html
[12] 使用命令行编译打包运行自己的MapReduce程序 Hadoop2.4.1 http://www.powerxing.com/hadoop-build-project-by-shell/
[13] 使用Eclipse编译运行MapReduce程序 Hadoop2.4.1 http://www.powerxing.com/hadoop-build-project-using-eclipse/

另外,如果配置0.20.×,可以参考的连接为
[1]http://snap.stanford.edu/class/cs246-2011/hw_files/hadoop_install.pdf
[2]https://hadoop.apache.org/docs/r1.2.1/single_node_setup.html
[3]http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-single-node-cluster/

0 2
原创粉丝点击