你好,游客 登录 注册 搜索
背景:
阅读新闻

Ubuntu14.04下Hadoop2.4.1单机/伪分布式安装配置教程

[日期:2015-02-15] 来源:Linux社区  作者:Linux [字体: ]

Hadoop伪分布式实例-WordCount

首先创建所需的几个目录

bin/hdfs dfs -mkdir /user
bin/hdfs dfs -mkdir /user/hadoop

接着将etc/hadoop中的文件作为输入文件复制到分布式文件系统中,即将/usr/local/hadoop/etc/hadoop复制到分布式文件系统中的/user/hadoop/input中。上一步创建的 /user/hadoop 相当于 HDFS 中的用户当前目录,可以看到复制文件时无需指定绝对目录,下面的命令的目标路径就是 /user/hadoop/input:

bin/hdfs dfs -put etc/hadoop input

运行MapReduce作业,执行成功的话跟单机模式相同,输出作业信息。

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.4.1.jar grep input output 'dfs[a-z.]+'

查看运行结果

bin/hdfs dfs -cat output/*

也可以将运行结果取回到本地。

rm -R ./output
bin/hdfs dfs -get output output
cat ./output/*

结果如下,注意到跟单机模式中用的不是相同的数据,所以运行结果不同(换成原来的数据,结果是一致的)。

Hadoop伪分布式运行WordCout结果Hadoop伪分布式运行WordCout结果

可以看到,使用bin/hdfs dfs -命令可操作分布式文件系统, 如

bin/hdfs dfs -ls /user/hadoop           # 查看`/user/hadoop`中的文件
bin/hdfs dfs -rm -R /user/hadoop/input/*    # 删除 input 中的文件
bin/hdfs dfs -rm -R /user/hadoop/output     # 删除 output 文件夹
运行程序时,输出目录需不存在

运行 Hadoop 程序时,结果的输出目录(如output)不能存在,否则会提示错误,因此运行前需要先删除输出目录。建议在程序中加上如下代码进行删除,避免繁琐的命令行操作:

Configuration conf = new Configuration();
Job job = new Job(conf);
...
/* 删除输出目录 */
Path outputPath = new Path(args[1]);
outputPath.getFileSystem(conf).delete(outputPath, true);
...

结束Hadoop进程,则运行

sbin/stop-dfs.sh
注意

下次再启动hadoop,无需进行HDFS的初始化,只需要运行 sbin/stop-dfs.sh 就可以!

安装Hadoop集群

请查看教程Hadoop集群安装配置教程  http://www.linuxidc.com/Linux/2015-02/113486.htm

附加教程

解决 sbin/start-dfs.sh中的warn提示

提示ssh: Could not resolve hostname *: Name or service not known

首先输入命令hostname看下自己的机器名,如我这边是powerxing-M1。修改/etc/hosts,将127.0.1.1 powerxing-M1改成192.168.1.121 powerxing-M1,即本机地址。

提示WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable

这是因为hadoop native library是32位系统编译的,在64位系统上会有这个提示,需要下载hadoop的源码重新编译,可参考http://stackoverflow.com/questions/19943766/hadoop-unable-to-load-native-hadoop-library-for-your-platform-error-on-centos

我已经在Ubuntu 14.04 64bit上编译过了,可下载我编译的进行覆盖。

下载地址:

------------------------------------------分割线------------------------------------------

免费下载地址在 http://linux.linuxidc.com/

用户名与密码都是www.linuxidc.com

具体下载目录在 /2015年资料/2月/15日/Ubuntu14.04下Hadoop2.4.1单机&伪分布式配置教程/

下载方法见 http://www.linuxidc.com/Linux/2013-07/87684.htm

------------------------------------------分割线------------------------------------------

下载后执行如下命令,替换掉原来的navtive library。

rm -R /usr/local/hadoop/lib
tar -zxvf ~/下载/lib.tar.gz -C /usr/local/hadoop

编译 Hadoop 源码

若想自己编译源码,需安装 g++ 和 Protocol Buffers(若访问不了可点此下载http://pan.baidu.com/s/1ntIAoVR):

sudo tar -zxvf ~/下载/protobuf-2.5.0.tar.gz -C /usr/local
sudo apt-get install g++
cd /usr/local/protobuf-2.5.0
sudo ./configure
sudo make
sudo make check
sudo make install
protoc –-version

最后一行代码应输出 protoc 的版本信息,若不能运行,则执行:

sudo ldconfig
protoc –-version

若提示出错错误 “protoc: error while loading shared libraries: libprotoc.so.8: cannot open shared object file: No such file or directory”。则执行:

export LD_LIBRARY_PATH=/usr/local/lib/

安装后切换到 Hadoop 源码目录下,执行:

cd ~/hadoop-2.4.1-src
mvn package -Pdist,native -DskipTests -Dtar

编译完成后,在 hadoop-2.4.1-src/hadoop-dist/target 可看到。

更多Hadoop相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

本文永久更新链接地址http://www.linuxidc.com/Linux/2015-02/113487.htm

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款