用centos搭建hadoop伪分布式集群,一路坎坷,终于走过来了。记录一下:
版本:centos7和hadoop2.7.4
hadoop的安装就不用说了,下载安装包解压就行,很顺利。主要是配置文件。一共有5个配置文件需要修改:
1:etc/hadoop/hadoop-env.sh配置文件
将 JAVA_HOME增加到此文件中,一般是文件末尾:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
2:core-site.xml配置文件
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/tmp</value>
</property>
</configuration>
其中hadoop.tmp.dir就是hadoop运行过程中产生临时文件的存放位置。
3:hdfs-site.xml配置文件
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
4:mapred-site.xml配置文件
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
5:yarn-site.xml配置文件
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
然后按照一般的hadoop搭建伪分布式集群来搭建。遇到了几个问题。
第一个问题:jps显示中没有datanode:
原因为name和node的version不一致,解决方法参考 http://nekomiao.me/2016/08/10/hadoop-without-datanode/
正常的jps结果中应该包含如下几个项:
27408 NameNode
28218 Jps
27643 SecondaryNameNode
28066 NodeManager
27803 ResourceManager
27512 DataNode
第二个问题:jps中没有nodemanager,并且导致50070端口无法访问
第三个问题:执行hadoop的实例程序wordcount,发现一直卡在running,而且8088页面上显示Memory Total 那些都是0。
这两个问题的解决办法都是,修改yarn-site.xml配置文件:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>8192</value>
</property>
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>1</value>
</property>
</configuration>
注意内存默认是8192,此值不能设置过小,比如设置成1024时,会经常报错,说使用的内存超过了1024M。
参考:http://www.voidcn.com/article/p-nykwlxxc-beo.html
至此,终于搭建完毕hadoop伪分布集群,并成功执行wordcount实例程序。
有时候搞不清某个文件到底是本地centos文件系统里面的,还是hdfs文件系统里面的,后面总结了一下,看路径:/user/hadoop这种一般是hdfs文件系统里面的。/home/hadoop一般是本地文件里面的。
stream jar是指/home/hadoop/hadoop-2.7.4/share/hadoop/tools/lib/hadoop-streaming-2.7.4.jar这个文件。
参考:
centos7搭建hadoop
大数据随笔
怎样进行大数据的入门级学习
一个杂货铺
解决Hadoop启动时,没有启动datanode
python的Numpy包学习
让python在hadoop上跑起来
Writing an Hadoop MapReduce Program in Python