配置项 | 详细参数 |
---|---|
主机 | k8s-master |
CPU | Intel(R) Xeon(R) Gold 6278C CPU @ 2.60GHz 2核 |
内存 | 4G |
硬盘 | 40G |
配置项 | 详细参数 |
---|---|
主机 | k8s-slave1 |
CPU | Intel(R) Xeon(R) Gold 6278C CPU @ 2.60GHz 2核 |
内存 | 4G |
硬盘 | 40G |
配置项 | 详细参数 |
---|---|
操作系统 | centos 7.7 |
jdk | 8 |
hadoop | 2.7.5 |
[root@root ~]# hostnamectl set-hostname k8s-master
[root@root ~]# more /etc/hostname
k8s-master
reboot服务器会显示新设置的主机名k8s-master,在另外一台服务器做同样的操作。
[root@k8s-master ~]# cat >> /etc/hosts << EOF
xxx.xxx.xxx.xxx k8s-master
xxx.xxx.xxx.xxx k8s-slave1
EOF
配置k8s-master到k8s-slave1之间免密登录
[k8s-master ~]# ssh-keygen -t rsa
[k8s-master ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@xxx.xxx.xxx.xxx
[k8s-master ~]# ssh xxx.xxx.xxx.xxx
[k8s-master ~]# ssh k8s-slave1
各节点都要执行禁用selinux操作
# 临时禁用selinux
[root@k8s-master ~]# setenforce 0
# 永久禁用selinux
[root@k8s-master ~]# vim /etc/selinux/config
SELINUX=disabled
各节点上执行关闭防火墙操作
[k8s-master ~]# systemctl stop firewalld
[k8s-master ~]# systemctl disable firewalld
我通常在安装完NameNode后直接把配置目录都会发送到其他机器上同步一份,不需要所有机器都手动配置一次,这样可以提高效率。PS:以下操作都是在root用户下操作。
hadoop的官方网站:http://hadoop.apache.org/
hadoop 2.7.5版本对应的下载地址: http://archive.apache.org/dist/hadoop/core/hadoop-2.7.5/
[root@k8s-master ~]# cd /opt/
# 下载安装包
[root@k8s-master opt]# wget http://archive.apache.org/dist/hadoop/core/hadoop-2.7.5/hadoop-2.7.5.tar.gz
[root@k8s-master opt]# tar -zxf hadoop-2.7.5.tar.gz
# 做软链接
[root@k8s-master opt]# ln -s hadoop-2.7.5 hadoop
[root@k8s-master ~]# vim /opt/hadoop/etc/hadoop/hadoop-env.sh
#找到"export JAVA_HOME"这行,用来配置jdk路径
# The java implementation to use.
export JAVA_HOME=/opt/jdk1.8.0_161/
[root@k8s-master ~]# vim /opt/hadoop/etc/hadoop/core-site.xml
# 在<configuration>和</configuration>之间加入的代码,我的主机名是k8s-master
<property>
<name>fs.defaultFS</name>
<value>hdfs://k8s-master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/hadoopdata</value>
</property>
[root@k8s-master ~]# vim /opt/hadoop/etc/hadoop/hdfs-site.xml
# 需要在<configuration>和</configuration>之间加入的代码
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
[root@k8s-master ~]# cp /opt/hadoop/etc/hadoop/mapred-site.xml.template /opt/hadoop/etc/hadoop/mapred-site.xml
[root@k8s-master ~]# vim /opt/hadoop/etc/hadoop/mapred-site.xml
# 需要在<configuration>和</configuration>之间加入的代码
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
[root@k8s-master ~]# vim /opt/hadoop/etc/hadoop/yarn-site.xml
# 需要在<configuration>和</configuration>之间加入的代码,我的主机名是k8s-master
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>k8s-master:18040</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>k8s-master:18030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>k8s-master:18025</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>k8s-master:18141</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>k8s-master:18088</value>
</property>
[root@k8s-master ~]# vim /opt/hadoop/etc/hadoop/hadoop-env.sh
#找到"export JAVA_HOME"这行,用来配置jdk路径
# some Java parameters
export JAVA_HOME=/opt/jdk1.8.0_161/
该slaves文件是给出了hadoop集群中的slave列表,系统总是根据当前slaves文件中的slave节点列表启动hadoop集群,不在列表中的slave节点便不会被视为计算节点。
[root@k8s-master ~]# vim /opt/hadoop/etc/hadoop/slaves
# 需要在slaves文件中添加以下主机名(PS: 删掉localhost那一行)
k8s-slave1
[root@k8s-master ~]# scp -r /opt/hadoop root@k8s-slave1:/opt
[root@k8s-master ~]# vim /root/.bash_profile
# 添加以下内容
# hadoop
export HADOOP_HOME=/opt/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
[root@k8s-master ~]# source ~/.bash_profile
[root@k8s-master ~]# mkdir -p /opt/hadoop/hadoopdata
[root@k8s-master ~]# cd /opt/hadoop/bin
[root@k8s-master ~]# ./hdfs namenode -format
[root@k8s-master ~]# cd /opt/hadoop/sbin
[root@k8s-master ~]# sh start-all.sh
PS: 执行命令后,系统提示 ” Are you sure want to continue connecting(yes/no)”,输入yes,之后系统即可启动。执行过程可能会有些慢,千万不要以为卡掉了,然后强制关机,这是错误的。
[root@k8s-master ~]# cd /opt/hadoop/sbin
[root@k8s-master ~]# sh stop-all.sh
PS: 下次启动Hadoop时,无须NameNode的初始化,只需要使用start-dfs.sh命令即可,然后接着使用start-yarn.sh启动Yarn。实际上,Hadoop建议放弃(deprecated)使用start-all.sh和stop-all.sh一类的命令,而改用启动start-dfs.sh和start-yarn.sh命令
1) 在NameNode上执行:(如果看到NameNode、ResourceManager、SecondaryNameNode,说明进程启动正常)
[root@k8s-master ~]# jps
14689 NameNode
15042 ResourceManager
14882 SecondaryNameNode
4309 Jps
1037 WrapperSimpleApp
2) 在DataNode上执行:(如果看到NodeManager、DataNode,说明进程启动正常)
[root@k8s-slave1 ~]# jps
19794 NodeManager
19636 DataNode
14251 Jps
1279 WrapperSimpleApp
2020-08-28 22:06:45,427 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Problem connecting to server: localhost/127.0.0.1:9000
2020-08-28 22:06:51,428 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 0 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)
问题定位:
1) /etc/hosts 中的ip映射不对
2) master与slave之间不能互通
3) hadoop配置文件有错
我这里是由于/etc/hosts里面配置的ip和hosts的映射有误,原来配置的外网ip,改成内网ip映射主机名即可。
原文:https://www.cnblogs.com/hyethebest/p/13584626.html