启动停止命令
启动服务
cd /data/soft/hadoop/sbin
hadoop-daemon.sh start journalnode
./start-all.sh
mapred --daemon start historyserver
yarn --daemon start timelineserver
停止服务
cd /data/soft/hadoop/sbin
hadoop-daemon.sh stop journalnode
./stop-all.sh
mapred --daemon stop historyserver
yarn --daemon stop timelineserver
HA 概述
HA 即高可用,在 Hadoop 中,只有 NN 和 MR 会出现单点故障。所以只需要对 NN 和 MR 做 HA
HA 原理就是额外起一台机子作冗余备份,当主机挂了,就让备机顶上。按照该想法会存在以下问题:
- 主备间如何同步 Edit?
- 如何检测主机下线?
- 如何做故障转移?
对于问题一:Hadoop 引入 JournalNode 解决
对于问题二:使用 ZK 来检测机器状态变化
对于问题三:Hadoop 引入 DFSZKFailoverController 解决
引入新的部件,为了防止这些也是是单点的,所以也得给他们起多个
集群规划
按照以上分析,便有以下集群规划
node01 | node02 | node03 |
---|---|---|
NameNode | NameNode | NameNode |
DFSZKFailoverController | DFSZKFailoverController | DFSZKFailoverController |
JournalNode | JournalNode | JournalNode |
DataNode | DataNode | DataNode |
ZK | ZK | ZK |
ResourceManager | ResourceManager | ResourceManager |
NodeManager | NodeManager | NodeManager |
ZK 集群搭建
Hadoop安装
Hadoop下载地址:
:::info
- https://hadoop.apache.org/releases.html
- https://archive.apache.org/dist/hadoop/common/(历史版本)
:::
将hadoop安装包"hadoop-3.4.0.tar.gz",拷贝到CentOS中
将Hadoop压缩包,解压缩到安装目录下 :
tar -zxvf /data/soft/hadoop-3.3.6.tar.gz
mv hadoop-3.3.6 hadoop
chown -R root:root ./hadoop
打开"/etc/profile"配置文件,配置hadoop环境变量(注意,标点符号全都要是英文半角):
export HADOOP_HOME=/data/soft/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export HADOOP_CLASSPATH=`hadoop classpath`
#export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_HOME/lib/native"
执行"/etc/profile",让配置生效:
source /etc/profile
测试hadoop安装:
hadoop version
修改配置
hadoop-env.sh
修改hadoop-env.sh文件,设置运行环境变量及运行用户
export JAVA_HOME=/data/soft/sdkman/candidates/java/current
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
export HDFS_JOURNALNODE_USER=root
export HDFS_ZKFC_USER=root
core-site.xml
注意:
HA集群名称要和hdfs-site.xml中的配置保持一致
修改存储路径
Zookeeper集群的地址和端口
<configuration>
<!-- HA集群名称,自定义,该值要和hdfs-site.xml中的配置保持一致 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://mycluster</value>
</property>
<!-- 指定hadoop运行时产生文件的存储路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/data/apps/hadoop</value>
</property>
<!-- 设置HDFS web UI访问用户 -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
<!-- ZooKeeper集群的地址和端口-->
<property>
<name>ha.zookeeper.quorum</name>
<value>master:2181,slave1:2181,slave2:2181</value>
</property>
<!-- 配置该root允许通过代理访问的主机节点 -->
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<!-- 配置该root允许代理的用户所属组 -->
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
<!-- 配置该root允许代理的用户 -->
<property>
<name>hadoop.proxyuser.root.