00 前期准备
1、已经下载并解压好hadoop
2、已部署java环境
01 主要模块
hdfs
NameNode nn
DataNode dn
Secondary NameNode 2nn
yarn
ResourceManager rm
NodeManager nm
ApplicationMaster AM
Container
MapReduce
Map
Reduce
02 各项环境信息
服务器情况
服务器名称 | 服务器ip | HDFS服务 | YARN 服务 | 说明 |
---|---|---|---|---|
ops-vb-m0 | 192.168.1.70 | NameNode / DataNode | NodeManager | 先在这台机器启动HDFS |
ops-vb-s1 | 192.168.1.71 | DataNode | ResourceManager / NodeManager | 再在这台机器启动YARN |
ops-vb-s2 | 192.168.1.72 | DataNode / Secondary NameNode | NodeManager | |
ops-vb-s3 | 192.168.1.73 | DataNode | NodeManager | 也可以不配置这台机器 |
03 创建虚拟机
虚拟机先配置好一台机器,然后在复制几台机器,
1、调整ip(如果有需要调整网卡的mac)
2、调整主机名
3、配置好hosts文件
04 设置ssh免密登录
在每台机器用户的 ~/.ssh目录下执行 :ssh-keygen -t rsa
生成公钥私钥
分别在每台机器执行下面命令,完成配置后ssh访问其他服务器就可以不用输入密码。
ssh-copy-id ops-vb-m0
ssh-copy-id ops-vb-s1
ssh-copy-id ops-vb-s2
ssh-copy-id ops-vb-s3
05 核心配置文件调整
调整文件:core-site.xml
/opsdata/envs**/hadoop-3.2.1/etc/hadoop/core-site.xml**
<!--指定HDFS中NameNode的地址-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ops-vb-m0:9000</value>
</property>
<!--指定Hadoop运行时产生文件的存储目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>/opsdata/hd_data/tmp</value>
</property>
06 HDFS配置文件调整
调整列表:
1. hadoop-env.sh
2. hdfs-site.xml
3. workers
调整文件:hadoop-env.sh :
添加JAVA_HOME
vi /opsdata/envs**/hadoop-3.2.1/etc/hadoop/hadoop-env.sh**
export JAVA_HOME=/opsdata/envs/jdk1.8.0_261
调整文件:hdfs-site.xml
hadoop集群数量,以及Secondary NameNode的服务器
vi /opsdata/envs**/hadoop-3.2.1/etc/hadoop/hdfs-site.xml**
<!--指定Hadoop 数据副本数量 -->
<property>
<name>dfs.replication</name>
<value>**3**</value>
</property>
<!--指定Hadoop辅助名称节点主机配置-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>**ops-vb-s2:50090**</value>
</property>
调整文件:workers
集群机器列表
vi /opsdata/envshadoop-3.2.1/etc/hadoop/etc/hadoop/workers (2.x版本的这个文件名是 /etc/hadoop/slaves 感觉进步了)
不能有多余的空格和换行
ops-vb-m0
ops-vb-s1
ops-vb-s2
ops-vb-s3
07 YARN配置文件调整
调整列表:
1. yarn-env.sh
2. yarn-site.xml
调整文件:yarn-env.sh
vi /opsdata/envs/hadoop-3.2.1/etc/hadoop/yarn-env.sh
export JAVA_HOME=/opsdata/envs/jdk1.8.0_261
调整文件:yarn-site.xml
vi /opsdata/envs/hadoop-3.2.1/etc/hadoop/yarn-site.xml
调整文件:yarn-site.xml
vi /opsdata/envs/hadoop-3.2.1/etc/hadoop/yarn-site.xml
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
<!--指定YARN的ResourceManager的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>ops-vb-s1</value>
</property>
08 MapReduce配置文件调整
调整列表:
1. mapred-env.sh
2. mapred-site.xml
调整文件:mapred-env.sh
vi /opsdata/envs/hadoop-3.2.1/etc/hadoop/mapred-env.sh
export JAVA_HOME=/opsdata/envs/jdk1.8.0_261
调整文件:mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.application.classpath</name>
<value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
</property>
09 集群机器同步配置文件
在ops-vb-m0机器上执行下面的命令,将调整后的配置文件同步到各个机器上。
rsync -rvl /opsdata/envs/hadoop-3.2.1/etc/hadoop/* ops@ops-vb-s1:/opsdata/envs/hadoop-3.2.1/etc/hadoop/
rsync -rvl /opsdata/envs/hadoop-3.2.1/etc/hadoop/* ops@ops-vb-s2:/opsdata/envs/hadoop-3.2.1/etc/hadoop/
rsync -rvl /opsdata/envs/hadoop-3.2.1/etc/hadoop/* ops@ops-vb-s3:/opsdata/envs/hadoop-3.2.1/etc/hadoop/
10 集群启动
格式化NameNode
如果之前配置启动过NameNode需要删除logs和data文件夹之后在进行格式化操作。
rm -rf /opsdata/envs/hadoop-3.2.1/logs
rm -rf /opsdata/hd_data
格式化NameNode
/opsdata/envs/hadoop-3.2.1/bin/hdfs namenode -format
启动HDFS
在ops-vb-m0机器上
/opsdata/envs/hadoop-3.2.1/sbin/start-dfs.sh
启动后使用jps -m 在各个机器上查看NameNode、Secondary NameNode和DataNode是否已经启动。
启动YARN
ops-vb-m1机器上
/opsdata/envs/hadoop-3.2.1/sbin/start-yarn.sh
11 集群监控
DataNode:
http://192.168.1.70:9864/datanode.html
DFShealth
http://192.168.1.70:9870/dfshealth.html
12 集群停止
停止YARN
ops-vb-m1机器上
/opsdata/envs/hadoop-3.2.1/sbin/stop-yarn.sh
停止HDFS
在ops-vb-m0机器上
/opsdata/envs/hadoop-3.2.1/sbin/stop-dfs.sh
停止后使用jps -m 在各个机器上查看java进程。
13 问题处理
启动datanode: Datanode Uuid unassigned
2021-02-08 01:22:02,894 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Problem connecting to server: ops-vb-m0/192.168.1.70:9000
hosts 文件去掉ops-vb-m0(s1|s2|s3) 对应127.0.0.1 那一条
启动yarn localhost: rcmd: socket: Permission denied
首先创建 /etc/pdsh/rcmd_default文件
sudo vi /etc/pdsh/rcmd_default
在文件中写入ssh保存(就ssh这三个字母就行)
14 参考资料
B站尚硅谷Hadoop教程(hadoop框架精讲):
https://www.bilibili.com/video/BV1cW411r7c5
官方文档
https://hadoop.apache.org/docs/r3.2.1/hadoop-project-dist/hadoop-common/ClusterSetup.html