首先说一些我的关于hadoop的配置吧:
- hadoop集群的主要配置文件有:
- hadoop-env.sh:配置hadoop运行所需的环境变量
- yarn-env.sh:配置yarn运行所需的环境变量
- core-site.xml:hadoop核心全局配置文件,可在其他配置文件中引用
- hdfs-site.xml:HDFS配置文件,继承core-site.xml配置文件
- mapred-site.xml:MapReduce配置文件,继承core-site.xml
- yarn-site.xml:yarn配置文件,继承core-site.xml
- 关于hadoop-env.sh
这个里面需要配置JAVA_HOME,也就是配置一下jdk的安装路径
# The java implementation to use.
export JAVA_HOME=/export/servers/jdk
- 关于core-site.xml的配置
<configuration>
<!-- 用于指定hadoop的文件系统 -->
<property>
<name>fs.defaultFS</name>
<!-- 指定namenode在hadoop001这台机器上 -->
<value>hdfs://hadoop001:9000</value>
</property>
<property>
<!-- 配置Hadoop临时文件存储目录 -->
<name>hadoop.tmp.dir</name>
<value>/export/servers/hadoop-2.7.4/tmp</value>
</property>
</configuration>
- 关于hdfs-site.xml的配置
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop002:50090</value>
</property>
</configuration>
- 关于mapred-site.xml的配置
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
- yarn-site.xml的配置
configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop001</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>2048</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>2048</value>
</property>
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>1</value>
</property>
</configuration>
中间关于hadoop集群配置出现的问题
- 问题一:配置完成后,namenode不能启动
解决方案:
- 先是再次将主节点再次格式化,hdfs namenode -format,再次启动hadoop,无效。
- 查看日志:ulimit -a for user root,网上查询原因得到:datanamenode运行时打开文件数,达到系统最大限制当前最大限制,ulimit -n 65536,调整最大文件数再次启动hadoop,无效。
- 检查配置文件,发现core-site.xml中关于配置hadoop集群主节点位置,属性的名称写错了… 解决
- 问题二:解决namenode之后可以正常启动了,但是jps发现进程中没有nodemanager,启动之后就挂掉,就是nodemanager总是掉线
解决方案:修改配置文件yarn-site.xml
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>2048</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>2048</value>
</property>
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>1</value>
</property>
分别是定义nodemanager上要提供正在运行的容器的全部可用资源大小,资源管理器中分配给每个容器请求的最小内存限制,nodemanager可以分配的cpu核数, 问题解决。
- 问题三:修改了上述问题后,又格式化了一下hdfs的文件系统,重新启动hadoop竟然发现,datanode不能成功启动
解决方案:
问题原因:namenode format清空了namenode下的数据,但是没有清空datanode下的数据,导致启动时失败。
解决:清空hadoop安装目录下的tmp目录,也就是之前配置文件中指定的tmp目录,重新启动tmp,注意:我是三台,所以三台机器都要清空tmp下的文件,成功解决。
坎坷的道路