hadoop 3.x 单机集群配置/启动时的问题处理

一.修改配置文件(hadoop目录/etc/hadoop/配置文件)

1.修改hadoop-env.sh,指定JAVA_HOME

修改完毕后

2.修改core-site.xml

 1 <configuration>
 2 <!-- 指定hadoop运行时产生的临时文件存储目录 -->    
 3 <property>
 4   <name>hadoop.tmp.dir</name>
 5   <value>/opt/module/hadoop-3.1.1/data/tmp</value>
 6 </property>
 7 
 8 <!-- 指定hfds namenode的缺省路径,可以是主机/ip :端口 -->    
 9     <property>
10     <name>fs.defaultFS</name>
11     <value>hdfs://hadoop002:9000</value>
12 </property>
13 </configuration>

3.修改hdfs-site.xml

 1 <configuration>
 2     <!-- 指定HDFS副本的数量 -->
 3     <property>
 4         <name>dfs.replication</name>
 5         <value>1</value>
 6     </property>
 7     <!--配置namenode的web界面-->
 8     <property>
 9         <name>dfs.namenode.http-address</name>
10         <value>hadoop002:50070</value>
11 </property>
12 </configuration>

到这启动hadoop的基本配置已经完成了(配置完这些已经可以启动hadoop了),下面配置yarn相关的文件

4.修改mapred-site.xml(此配置文件中尽量不要使用中文注释,否则启动的时候会有一个java.lang.RuntimeException: com.ctc.wstx.exc.WstxIOException: Invalid UTF-8 start byte 0xb5 (at char #672, byte #20))

1 <configuration>
2 <!-- 使用yarn框架 -->
3     <property>
4         <name>mapreduce.framework.name</name>
5         <value>yarn</value>
6     </property>
7 </configuration>

5.修改yarn-site.xml(此配置文件中尽量不要使用中文注释,否则启动的时候会有一个java.lang.RuntimeException: com.ctc.wstx.exc.WstxIOException: Invalid UTF-8 start byte 0xb5 (at char #672, byte #20))

 1 <configuration>
 2 <!-- Site specific YARN configuration properties -->
 3     <!--resourcemanager address-->
 4 <property>
 5 <name>yarn.resourcemanager.hostname</name>
 6 <value>localhost</value>
 7 </property>
 8  
 9 <!--reduce-->
10 <property>
11 <name>yarn.nodemanager.aux-services</name>
12 <value>mapreduce_shuffle</value>
13 </property>
14 </configuration>

6.启动

6.1按照官方文档,第一步先检查ssh能否免密登录如果不能免密登录需要执行以下命令

   ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
   cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
   chmod 0600 ~/.ssh/authorized_keys
如果不能免密且没有执行这三个命令,那么启动时会有Permission Dennied
如果出现
ssh connect to host xxx port 22:Connection timed out,ifconfig查看自己的ip与 /etc/hosts下的映射中的ip是否一致

6.2执行hdfs namenode -format格式化namenode,第一次启动时执行即可,今后不再需要

6.3执行start-dfs.sh

6.4执行start-yarn.sh

或者直接执行stop-all.sh

6.5jps查看进程


可以在/tmp/下查看*.pid文件,其内容为上图的进程号

6.6停止的话使用对应的stop-xxx.sh(或者stop-all.sh)即可

到这hadoop已经成功启动了,官方文档:http://hadoop.apache.org/docs/r3.1.1/hadoop-project-dist/hadoop-common/SingleCluster.html

6.7无法停止hadoop

此时虽然已经可以正常启动了,但为了维护方便建议修改pid的路径 ,因为默认把pid文件存储在/tmp/下,而linux会定期清理/tmp/路径一旦pid文件被清理到,此时想执行stop-all.sh后再次jps发现hadoop依然在运行,这个时候想关闭hadoop就只能手动的kill了因此要修改pid的存储路径,打开hadoop目录/etc/hadoop/hadoop-env.sh,找到HADOOP_PID_DIR,修改路径为你自定义的路径即可接下来通过实验证明以上结论

先执行jps,证明此时hadoop并未启动,然后再启动hadoop

成功启动后查看pid文件后然后删除

执行stop-all.sh,发现hadoop依然在运行

此时重新启动hadoop,发现进程号没有改变,虽然重新生成了pid

到这说明,一旦hadoop的pid文件被删除想要停止hadoop就只能手动kill,而且如果hadoop没有停止掉,又重新启动了hadoop,此时虽然会生成新的pid,但从进程号上来看依旧是之前没有被停止掉的hadoop

6.8初始化时出现Cannot remove/create xxxx

 打开你的core-site.xml,如果是在"/"下创建目录最好手动去创建 并且修改属主与组为你启动hadoop的用户

sudo mkdir -p /hadoop/tmp 

sudo chown -R tele:tele /hadoop/

创建并且修改完成后重新初始化即可,如果不是在"/"直接创建文件夹,那么就可以交给hadoop自动创建属主为启动hadoop的用户的文件夹了初始化之后如果启动hadoop,发现没有datanode,在你指定的tmp路径/dfs/name目录下找到一个current/VERSION文件,记录clusterID并复制。然后dfs/data目录下找到一个current/VERSION文件,将其中clustreID的值替换成刚刚复制的clusterID的值后重新启动即可

 

原文地址:https://www.cnblogs.com/tele-share/p/9495578.html