Hadoop HA环境部署
2020-01-13 21:31
99 查看
文章目录
1. 组件版本
组件名 | 版本 |
---|---|
Hadoop | hadoop-2.6.0-cdh5.15.1.tar.gz |
JDK | jdk-8u191-linux-x64.tar.gz |
ZooKeeper | zookeeper-3.4.6.tar.gz |
2. 集群规划
hostname | 组件 | 进程 |
---|---|---|
spark001 | Hadoop,ZooKeeper,JDK | QuorumPeerMain NameNode DataNode ResourceManager NodeManager JournalNode JobHistoryServer DFSZKFailoverController |
spark002 | Hadoop,ZooKeeper,JDK | QuorumPeerMain NameNode DataNode ResourceManager NodeManager JournalNode DFSZKFailoverController |
spark003 | Hadoop,ZooKeeper,JDK | QuorumPeerMain DataNode NodeManager JournalNode DFSZKFailoverController |
3. 创建hadoop用户的目录结构(三台都执行)
# 添加hadoop用户 [root@spark001 ~]# useradd hadoop # 切换至hadoop用户,创建目录 [root@spark001 ~]# su - hadoop [hadoop@spark001 ~]$ mkdir app data lib maven_repos software script source tmp drwxrwxr-x 2 hadoop hadoop 4096 Aug 20 22:16 app drwxrwxr-x 2 hadoop hadoop 4096 Aug 20 22:16 data drwxrwxr-x 2 hadoop hadoop 4096 Aug 20 22:16 lib drwxrwxr-x 2 hadoop hadoop 4096 Aug 20 22:16 maven_repos drwxrwxr-x 2 hadoop hadoop 4096 Aug 20 22:16 script drwxrwxr-x 2 hadoop hadoop 4096 Aug 20 23:16 software drwxrwxr-x 2 hadoop hadoop 4096 Aug 20 22:16 source drwxrwxr-x 2 hadoop hadoop 4096 Aug 20 22:31 tmp
目录说明
目录名称 | 备注 |
---|---|
app | 组件安装目录 |
data | 数据目录 |
lib | 开发的jar包 |
maven_repos | maven仓库 |
script | shell脚本 |
software | 组件安装包 |
source | 源码包 |
tmp | 临时目录 |
4. 环境准备
4.1 修改hosts(三台都执行)
[root@spark001 software]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 # 将机器的内网ip添加进去 [root@spark001 software]# vim /etc/hosts 172.31.120.113 spark001 172.31.120.112 spark002 172.31.120.111 spark003
4.2 添加SSH信任
# 进入hadoop用户 [root@spark001 software]# su - hadoop # 输入ssh-keygen,生成密钥,之后点击回车至结束 [hadoop@spark001 ~]$ ssh-keygen # 进入.ssh文件夹,可看到公钥和私钥 [hadoop@spark001 ~]$ cd .ssh [hadoop@spark001 .ssh]$ ll total 8 -rw------- 1 hadoop hadoop 1679 Aug 20 22:35 id_rsa -rw-r--r-- 1 hadoop hadoop 397 Aug 20 22:35 id_rsa.pub # 在spark001上执行 [hadoop@spark001 .ssh]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys # 将spark002和spark003的id_rsa.pub 下载到桌面命名为id_rsa.pub2 和 id_rsa.pub3 # 将这两个文件上传到spark001的.ssh目录 [hadoop@spark001 .ssh]$ rz [hadoop@spark001 .ssh]$ ll total 20 -rw-rw-r-- 1 hadoop hadoop 397 Aug 20 22:40 authorized_keys -rw------- 1 hadoop hadoop 1679 Aug 20 22:35 id_rsa -rw-r--r-- 1 hadoop hadoop 397 Aug 20 22:35 id_rsa.pub -rw-r--r-- 1 hadoop hadoop 397 Aug 20 22:38 id_rsa.pub2 -rw-r--r-- 1 hadoop hadoop 397 Aug 20 22:39 id_rsa.pub3 # 将这两个文件追加到authorized_keys中 [hadoop@spark001 .ssh]$ cat id_rsa.pub2 >> authorized_keys [hadoop@spark001 .ssh]$ cat id_rsa.pub3 >> authorized_keys #将spark001的authorized_keys下载到本地,并上传到spark002和spark003 [hadoop@spark001 .ssh]$ sz authorized_keys # 如果有以上提示 要求输入密码 就说明有问题 [hadoop@spark001 .ssh]$ ssh spark001 date The authenticity of host 'spark001 (172.31.120.113)' can't be established. ECDSA key fingerprint is cf:37:5a:89:3d:68:70:56:63:e3:72:a3:c4:60:14:1a. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'spark001,172.31.120.113' (ECDSA) to the list of known hosts. hadoop@spark001's password: # 需要执行以下命令 给文件赋权 [hadoop@spark001 .ssh]$ chmod 600 authorized_keys # 先在每台机器上执行ssh spark001 date,输入yes后,再执行ssh spark002 date,输入yes后,在执行ssh spark003 date [hadoop@spark001 .ssh]$ ssh spark001 date [hadoop@spark001 .ssh]$ ssh spark002 date [hadoop@spark001 .ssh]$ ssh spark003 date # 再执行下如下命令 出现时间即表示成功 ssh spark001 date ssh spark002 date ssh spark003 date
5. 将软件上传到spark001,再分发到spark002、spark003
# 将spark001中的软件包传到spark002、spark003 [hadoop@spark001 ~]$ cd software/ [hadoop@spark001 software]$ ll total 438648 drwxrwxr-x 2 hadoop hadoop 4096 Aug 20 22:21 hadoop -rw-r--r-- 1 hadoop hadoop 253270787 Aug 20 22:20 hadoop-2.6.0-cdh5.15.1.tar.gz -rw-r--r-- 1 hadoop hadoop 191753373 Aug 20 22:27 jdk-8u191-linux-x64.tar.gz -rw-r--r-- 1 hadoop hadoop 4142754 Aug 20 22:08 zookeeper-3.4.6.tar.gz # 远程复制到spark002和spark003上 [hadoop@spark001 software]$ scp *.tar* spark002:`pwd` [hadoop@spark001 software]$ scp *.tar* spark003:`pwd`
6. 安装JDK
# 退回到root用户 # 创建/usr/java目录 [root@spark001 java]# tar -zxvf /home/hadoop/software/jdk-8u191-linux-x64.tar.gz -C /usr/java/
# 权限修正 [root@spark001 java]# chown -R root:root jdk1.8.0_191 [root@spark001 java]# vim /etc/profile #添加JAVA_HOME export JAVA_HOME=/usr/java/jdk1.8.0_191 export PATH=$JAVA_HOME/bin:$PATH [root@spark001 java]# source /etc/profile [root@spark001 java]# java -version java version "1.8.0_191" Java(TM) SE Runtime Environment (build 1.8.0_191-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
7.安装ZooKeeper
-
解压
# 解压 [hadoop@spark001 software]$ tar -zxvf zookeeper-3.4.6.tar.gz -C ~/app/ # 创建软链接,便于更换版本 [hadoop@spark001 app]$ ln -s zookeeper-3.4.6 zookeeper
-
修改配置文件
# 拷贝一份zoo_sample.cfg,命名为zoo.cfg [hadoop@spark001 conf]$ cp zoo_sample.cfg zoo.cfg [hadoop@spark001 conf]$ vim zoo.cfg # the directory where the snapshot is stored. # do not use /tmp for storage, /tmp here is just # example sakes. dataDir=/home/hadoop/data/zookeeper server.1=spark001:2888:3888 server.2=spark002:2888:3888 server.3=spark003:2888:3888 # 创建对应目录 [hadoop@spark001 conf]$ mkdir /home/hadoop/data/zookeeper
以上步骤同时在三台机器执行
# 给每台机器上的zookeeper创建唯一标识myid [hadoop@spark001 app]$ echo 1 > /home/hadoop/data/zookeeper/myid [hadoop@spark002 app]$ echo 2 > /home/hadoop/data/zookeeper/myid [hadoop@spark003 app]$ echo 3 > /home/hadoop/data/zookeeper/myid 注意:切记给每台机器上的zookeeper创建唯一标识的时候 > 左右都需要空格
-
配置环境变量(三台同时操作)
[hadoop@spark001 app]$ vim ~/.bash_profile #zookeeper export ZOOKEEPER_HOME=/home/hadoop/app/zookeeper export PATH=$ZOOKEEPER_HOME/bin:$PATH # 配置生效 [hadoop@spark001 app]$ source ~/.bash_profile # 验证 [hadoop@spark001 ~]$ which zkServer.sh ~/app/zookeeper/bin/zkServer.sh
-
启动与停止
# 启动 [hadoop@spark001 ~]$ zkServer.sh start JMX enabled by default Using config: /home/hadoop/app/zookeeper/bin/../conf/zoo.cfg Starting zookeeper ... STARTED # 查看状态 [hadoop@spark001 ~]$ zkServer.sh status # 停止 [hadoop@spark001 ~]$ zkServer.sh stop
8. 安装Hadoop
-
解压
# 解压至app目录 [hadoop@spark001 software]$ tar -zxvf hadoop-2.6.0-cdh5.15.1.tar.gz -C ~/app/ # 软链接,便于更换版本 [hadoop@spark001 app]$ ln -s hadoop-2.6.0-cdh5.15.1 hadoop
-
修改配置文件
# 修改hadoop-env.sh,添加JAVA_HOME # The java implementation to use. export JAVA_HOME=/usr/java/jdk1.8.0_191 # 删除 core-site.xml、hdfs-site.xml、yarn-site.xml,上传已修改好的对应配置 [hadoop@spark001 hadoop]$ rm -f core-site.xml hdfs-site.xml yarn-site.xml ## 上传好之后 ll 查看下文件的角色信息 如果不是hadoop用户 修改下 [hadoop@spark001 hadoop]$ chown -R hadoop:hadoop /home/hadoop/app/hadoop/etc/hadoop
-
配置环境变量
[hadoop@spark001 hadoop]$ vim ~/.bash_profile #hadoop export HADOOP_HOME=/home/hadoop/app/hadoop export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH [hadoop@spark001 hadoop]$ source ~/.bash_profile
9. 启动集群
9.1 启动HDFS
-
启动之前需要先启动JournalNode
# 启动JournalNode(三台都执行) [hadoop@spark001 sbin]$ hadoop-daemon.sh start journalnode # jps查看下启动情况 [hadoop@spark001 sbin]$ jps 2181 QuorumPeerMain 2302 JournalNode 2351 Jps
-
格式化NameNode
# 在spark001上执行 [hadoop@spark001 data]$ hadoop namenode -format # 看到这句话说明初始化成功 Storage directory /home/hadoop/data/dfs/name has been successfully formatted. # 将初始化的namenode信息同步到第二台机器上 为了让两台namenode信息保持一致 [hadoop@spark001 dfs]$ scp -r name spark002:`pwd`
-
初始化ZKFC
# 初始化ZKFC只需要选择一台机器即可,因为zk是集群,选择一台建立hdfs zk之间的关联关系就行了。出现以下信息及表示初始化成功。 [hadoop@spark001 sbin]$ hdfs zkfc -formatZK 19/08/23 15:30:37 INFO ha.ActiveStandbyElector: Session connected. 19/08/23 15:30:37 INFO ha.ActiveStandbyElector: Successfully created /hadoop-ha/ruozeclusterg7 in ZK. 19/08/23 15:30:37 INFO zookeeper.ZooKeeper: Session: 0x26cbd19119a0000 closed 19/08/23 15:30:37 INFO zookeeper.ClientCnxn: EventThread shut down 19/08/23 15:30:37 INFO tools.DFSZKFailoverController: SHUTDOWN_MSG:
-
启动HDFS
[hadoop@spark001 ~]$ start-dfs.sh Starting namenodes on [spark001 spark002] spark001: starting namenode, logging to /home/hadoop/app/hadoop-2.6.0-cdh5.15.1/logs/hadoop-hadoop-namenode-spark001.out spark002: starting namenode, logging to /home/hadoop/app/hadoop-2.6.0-cdh5.15.1/logs/hadoop-hadoop-namenode-spark002.out spark001: starting datanode, logging to /home/hadoop/app/hadoop-2.6.0-cdh5.15.1/logs/hadoop-hadoop-datanode-spark001.out spark002: starting datanode, logging to /home/hadoop/app/hadoop-2.6.0-cdh5.15.1/logs/hadoop-hadoop-datanode-spark002.out spark003: starting datanode, logging to /home/hadoop/app/hadoop-2.6.0-cdh5.15.1/logs/hadoop-hadoop-datanode-spark003.out Starting journal nodes [spark001 spark002 spark003] spark002: starting journalnode, logging to /home/hadoop/app/hadoop-2.6.0-cdh5.15.1/logs/hadoop-hadoop-journalnode-spark002.out spark003: starting journalnode, logging to /home/hadoop/app/hadoop-2.6.0-cdh5.15.1/logs/hadoop-hadoop-journalnode-spark003.out spark001: starting journalnode, logging to /home/hadoop/app/hadoop-2.6.0-cdh5.15.1/logs/hadoop-hadoop-journalnode-spark001.out Starting ZK Failover Controllers on NN hosts [spark001 spark002] spark001: starting zkfc, logging to /home/hadoop/app/hadoop-2.6.0-cdh5.15.1/logs/hadoop-hadoop-zkfc-spark001.out spark002: starting zkfc, logging to /home/hadoop/app/hadoop-2.6.0-cdh5.15.1/logs/hadoop-hadoop-zkfc-spark002.out # 验证一下 [hadoop@spark001 ~]$ jps 2352 NameNode 2838 DFSZKFailoverController 2457 DataNode 2651 JournalNode 2940 Jps 2190 QuorumPeerMain
-
单个进程启动
# namenode datanode journalnode zkfc [hadoop@spark001 ~]$ hadoop-daemon.sh start namenode
-
防止被挖矿设置
9.2 启动Yarn
-
启动
# 在spark001上执行 [hadoop@spark001 ~]$ start-yarn.sh starting yarn daemons starting resourcemanager, logging to /home/hadoop/app/hadoop-2.6.0-cdh5.15.1/logs/yarn-hadoop-resourcemanager-spark001.out spark003: starting nodemanager, logging to /home/hadoop/app/hadoop-2.6.0-cdh5.15.1/logs/yarn-hadoop-nodemanager-spark003.out spark002: starting nodemanager, logging to /home/hadoop/app/hadoop-2.6.0-cdh5.15.1/logs/yarn-hadoop-nodemanager-spark002.out spark001: starting nodemanager, logging to /home/hadoop/app/hadoop-2.6.0-cdh5.15.1/logs/yarn-hadoop-nodemanager-spark001.out # spark002上的resourcemanager需要单独手动开启 [hadoop@spark002 ~]$ yarn-daemon.sh start resourcemanager # 此时三台机器下的进程 # spark001 [hadoop@spark001 ~]$ jps 2352 NameNode 3089 ResourceManager 3523 Jps 3187 NodeManager 2838 DFSZKFailoverController 2457 DataNode 2651 JournalNode 2190 QuorumPeerMain # spark002 [hadoop@spark002 ~]$ jps 2544 DFSZKFailoverController 3139 ResourceManager 2324 DataNode 2420 JournalNode 2165 QuorumPeerMain 3206 Jps 2251 NameNode 2958 NodeManager # spark003 [hadoop@spark003 ~]$ jps 2353 JournalNode 2257 DataNode 2165 QuorumPeerMain 2619 Jps 2493 NodeManager
-
web页面访问
# 1.对于HDFS来说,访问web页面 NameNode(active):spark001(公网):50070 NameNode(standby):spark001(公网):50070 #2.对于Yarn ResourceManager(active):spark001(公网):8088 ResourceManager(standby):spark001(公网):8088/cluster/cluster
9.3 启动JobHistoryServer
作用:作业的历史查看
-
启动
# 在spark001上执行 [hadoop@spark001 sbin]$ mr-jobhistory-daemon.sh start historyserver [hadoop@spark001 sbin]$ jps 2352 NameNode 3089 ResourceManager 3187 NodeManager 2838 DFSZKFailoverController 3704 Jps 2457 DataNode 2651 JournalNode 2190 QuorumPeerMain 3631 JobHistoryServer # 启动成功
-
web页面访问:spark001(公网ip):19888
10. 关闭集群
关闭顺序是跟启动顺序反着的
# 在saprk001上执行 [hadoop@spark001 sbin]$ mr-jobhistory-daemon.sh stop historyserver # 在spark002上执行 [hadoop@spark002 sbin]$ yarn-daemon.sh stop resourcemanager # 在saprk001上执行 [hadoop@spark001 sbin]$ stop-all.sh # 在三台机器同时执行 [hadoop@spark001 sbin]$ zkServer.sh stop [hadoop@spark002 sbin]$ zkServer.sh stop [hadoop@spark003 sbin]$ zkServer.sh stop
- 点赞
- 收藏
- 分享
- 文章举报
![](https://g.csdnimg.cn/static/user-reg-year/1x/1.png)
相关文章推荐
- CentOS6.5环境部署Hadoop2.8.1集群(HA)
- Hadoop 学习笔记 (九) hadoop2.2.0 生产环境部署 HDFS HA部署方法
- Hadoop大数据框架研究(2)——Hadoop的HA高可用性集群环境部署
- hadoop2.7.3 ha 环境部署——QJM
- Hadoop大数据框架研究(3)——Spark的HA高可用性集群环境部署
- Hadoop 离线安装 CDH5.1 第一章:离线环境部署
- 在 Windows 平台下部署 Hadoop 开发环境
- Hadoop环境部署
- Hadoop环境部署
- Hadoop在Windows环境下的部署
- hbase-1.1.3 基于 hadoop-2.6.2 ha 分布式部署
- Hadoop学习笔记1:Hadoop2.7.3分布式部署-Eclipse开发环境部署
- 大数据Hadoop的HA高可用架构集群部署
- hadoop 2.0.1 HA配置部署
- 使用Ambari快速部署Hadoop大数据环境
- hadoop集群环境部署之chukwa客户端
- Hadoop HA高可用集群环境搭建(CenOS7)
- Hadoop2.7.3全分布式环境搭建(非HA)
- 生产环境上的HADOOP安装部署注意事项(HDP版)
- Hadoop集群环境部署_lzo