修改服务器主机名
配置主机映射(按现实个人ip为准)
追加以下:
- 192.168.174.201 hadoop01
- 192.168.174.202 hadoop02
- 192.168.174.203 hadoop03
复制代码 SSH无密登录配置
(1)hadoop01上生成公钥和私钥(所有呆板要重复以下操纵):
然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)。
(2)将hadoop01公钥拷贝到要免密登录的目标呆板上
编写集群分发脚本xsync
阐明:在/home/hadoop/bin这个目录下存放的脚本,hadoop用户可以在体系任何地方直接执行。
在用的家目录/home/hadoop下创建bin文件夹
- sudo vim /home/hadoop/bin/xsync
复制代码- #!/bin/bash
- #1. 判断参数个数
- if [ $# -lt 1 ]
- then
- echo Not Enough Arguement!
- exit;
- fi
- #2. 遍历集群所有机器
- for host in hadoop01 hadoop02 hadoop03
- do
- echo ==================== $host ====================
- #3. 遍历所有目录,挨个发送
- for file in $@
- do
- #4 判断文件是否存在
- if [ -e $file ]
- then
- #5. 获取父目录
- pdir=$(cd -P $(dirname $file); pwd)
- #6. 获取当前文件的名称
- fname=$(basename $file)
- ssh $host "mkdir -p $pdir"
- rsync -av $pdir/$fname $host:$pdir
- else
- echo $file does not exists!
- fi
- done
- done
复制代码 授权限
编写集群下令批量执行脚本
- sudo vim home/hadoop/bin/xcall
复制代码- #! /bin/bash
-
- for i in hadoop01 hadoop02 hadoop03
- do
- echo --------- $i ----------
- ssh $i "$*"
- done
复制代码 授权限
Java自行安装配置(三个服务器都必要)
Zookeeper安装
1)集群规划
在hadoop01、hadoop02和hadoop03三个节点上部署Zookeeper。
| 服务器hadoop01
| 服务器hadoop02
| 服务器hadoop03
| Zookeeper
| Zookeeper
| Zookeeper
| Zookeeper
| 2)解压安装
(1)解压Zookeeper安装包到/export/service/目录下
[hadoop@hadoop01 software]$ tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz -C /export/service/
(2)修改/export/service/apache-zookeeper-3.7.1-bin名称为zookeeper-3.7.1
[hadoop@hadoop01 module]$ mv apache-zookeeper-3.7.1-bin/ zookeeper
3)配置服务器编号
(1)在/export/service/zookeeper/目录下创建zkData
(2)在/export/service/zookeeper/zkData目录下创建一个myid的文件
添加myid文件,注意一定要在linux里面创建,在notepad++里面很可能乱码
在文件中添加与server对应的编号:hadoop02、hadoop03上为2、3
4)配置zoo.cfg文件
(1)重命名/export/service/zookeeper/conf目录下的zoo_sample.cfg为zoo.cfg
- mv zoo_sample.cfg zoo.cfg
复制代码 (2)打开zoo.cfg文件
修改数据存储路径配置
- dataDir=/export/service/zookeeper/zkData
复制代码 增加如下配置
- #######################cluster##########################
- server.1=hadoop01:2888:3888
- server.2=hadoop02:2888:3888
- server.3=hadoop03:2888:3888
复制代码 (3)同步/export/service/zookeeper目录内容到hadoop02、hadoop03
- xsync /export/service/zookeeper/
复制代码 (4)zoo.cfg配置参数解读
server.A=B:C 。
A是一个数字,表示这个是第几号服务器;
集群模式下配置一个文件myid,这个文件在dataDir目录下,这个文件里面有一个数据就是A的值,Zookeeper启动时读取此文件,拿到里面的数据与zoo.cfg里面的配置信息比较从而判断到底是哪个server。
B是这个服务器的地点;
C是这个服务器Follower与集群中的Leader服务器互换信息的端口;
D是万一集群中的Leader服务器挂了,必要一个端口来重新举行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通讯的端口。
5)集群操纵
(1)分别hadoop01、hadoop02、hadoop03启动Zookeeper
(2)查看状态
ZK集群启动克制脚本zh.sh
- vim /home/hadoop/bin/zk.sh
复制代码- #!/bin/bash
- case $1 in
- "start"){
- for i in hadoop01 hadoop02 hadoop03
- do
- echo ---------- zookeeper $i 启动 ------------
- ssh $i "/export/service/zookeeper/bin/zkServer.sh start"
- done
- };;
- "stop"){
- for i in hadoop01 hadoop02 hadoop03
- do
- echo ---------- zookeeper $i 停止 ------------
- ssh $i "/export/service/zookeeper/bin/zkServer.sh stop"
- done
- };;
- "status"){
- for i in hadoop01 hadoop02 hadoop03
- do
- echo ---------- zookeeper $i 状态 ------------
- ssh $i "/export/service/zookeeper/bin/zkServer.sh status"
- done
- };;
- esac
复制代码 授权限
配置Hadoop
安装包安装及环境变量自行配置
core-site.xml配置文件
- <configuration>
- <!-- 默认文件系统设置,指定HDFS集群的地址 -->
- <property>
- <name>fs.defaultFS</name>
- <value>hdfs://mycluster</value>
- </property>
-
- <!-- Hadoop临时文件目录设置,指定临时文件存放的位置 -->
- <property>
- <name>hadoop.tmp.dir</name>
- <value>/export/service/tmp</value>
- </property>
- <!-- 文件缓冲区大小设置,单位为字节,控制I/O操作时的缓存大小 -->
- <property>
- <name>io.file.buffer.size</name>
- <value>4096</value>
- </property>
-
- <!-- HDFS高可用性配置,指定ZooKeeper集群地址,用于监控NameNode的状态 -->
- <property>
- <name>ha.zookeeper.quorum</name>
- <value>zookeeper01:2181,zookeeper02:2181,zookeeper03:2181</value>
- </property>
- </configuration>
复制代码 mapred-site.xml配置文件
- <configuration>
- <!-- 设置MapReduce框架为YARN -->
- <property>
- <name>mapreduce.framework.name</name>
- <value>yarn</value>
- </property>
- <!-- 设置MapReduce作业历史服务器的地址 -->
- <property>
- <name>mapreduce.jobhistory.address</name>
- <value>0.0.0.0:10020</value>
- </property>
- <!-- 设置MapReduce作业历史的Web应用访问地址 -->
- <property>
- <name>mapreduce.jobhistory.webapp.address</name>
- <value>0.0.0.0:19888</value>
- </property>
- </configuration>
复制代码 hdfs-site.xml配置文件
yarn-site.xml配置文件
- <configuration>
- <!-- 启用ResourceManager高可用性 -->
- <property>
- <name>yarn.resourcemanager.ha.enabled</name>
- <value>true</value>
- </property>
- <!-- 设置YARN集群的ID,用于标识集群 -->
- <property>
- <name>yarn.resourcemanager.cluster-id</name>
- <value>cluster1</value>
- </property>
- <!-- 启用ResourceManager的恢复功能 -->
- <property>
- <name>yarn.resourcemanager.recovery.enabled</name>
- <value>true</value>
- </property>
- <!-- 配置ResourceManager状态存储方式,这里使用ZooKeeper作为存储后端 -->
- <property>
- <name>yarn.resourcemanager.store.class</name>
- <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
- </property>
-
- <!-- 配置高可用性模式下的ResourceManager实例ID -->
- <property>
- <name>yarn.resourcemanager.ha.rm-ids</name>
- <value>rm1,rm2,rm3</value>
- </property>
- <!-- 配置第一个ResourceManager的主机名 -->
- <property>
- <name>yarn.resourcemanager.hostname.rm1</name>
- <value>hadoop01</value>
- </property>
- <!-- 配置第二个ResourceManager的主机名 -->
- <property>
- <name>yarn.resourcemanager.hostname.rm2</name>
- <value>hadoop02</value>
- </property>
- <!-- 配置第三个ResourceManager的主机名 -->
- <property>
- <name>yarn.resourcemanager.hostname.rm3</name>
- <value>hadoop03</value>
- </property>
- <!-- 配置第一个ResourceManager的Web应用访问地址 -->
- <property>
- <name>yarn.resourcemanager.webapp.address.rm1</name>
- <value>hadoop01:8088</value>
- </property>
- <!-- 配置第二个ResourceManager的Web应用访问地址 -->
- <property>
- <name>yarn.resourcemanager.webapp.address.rm2</name>
- <value>hadoop02:8088</value>
- </property>
- <!-- 配置第三个ResourceManager的Web应用访问地址 -->
- <property>
- <name>yarn.resourcemanager.webapp.address.rm3</name>
- <value>hadoop03:8088</value>
- </property>
- <!-- 配置ZooKeeper的地址,用于YARN的高可用性和状态存储 -->
- <property>
- <name>hadoop.zk.address</name>
- <value>zookeeper01:2181,zookeeper02:2181,zookeeper03:2181</value>
- </property>
- <!-- 启用YARN NodeManager的附加服务 -->
- <property>
- <name>yarn.nodemanager.aux-services</name>
- <value>mapreduce_shuffle</value>
- </property>
- <!-- 配置YARN NodeManager的附加服务类,这里是MapReduce的Shuffle服务 -->
- <property>
- <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
- <value>org.apache.hadoop.mapred.ShuffleHandler</value>
- </property>
-
- <!-- 启用YARN日志聚合功能 -->
- <property>
- <name>yarn.log-aggregation-enable</name>
- <value>true</value>
- </property>
- <!-- 配置日志聚合保留时间,单位为秒,这里设置为7天 -->
- <property>
- <name>yarn.log-aggregation.retain-seconds</name>
- <value>604800</value>
- </property>
- </configuration>
复制代码 workers配置文件
- vim /export/service/etc/hadoop/workers
- hadoop01
- hadoop02
- hadoop03
复制代码 分发到其他服务器
- scp /export/service/hadoop/etc/hadoop/* hadoop02:/export/service/hadoop/etc/hadoop/
- scp /export/service/hadoop/etc/hadoop/* hadoop03:/export/service/hadoop/etc/hadoop/
复制代码 启动hadoop服务
1、初始化zookeeper(任意节点)
验证zkfc是否格式化乐成
- # zkCli.sh
- [zk: localhost:2181(CONNECTED) 0] ls /hadoop-ha
- [mycluster]
复制代码 2、启动journalnode
在hadoop01、hadoop02及hadoop03节点启动journalnode
- hdfs --daemon start journalnode
复制代码 补充:若在Hadoop启动过程找不到JAVA_HOME就到/export/service/hadoop-3.3.4/etc/hadoop/hadoop-env.sh文件手工配置JAVA_HOME
- export JAVA_HOME='/export/service/jdk-1.8.0'
复制代码 3、启动namenode
hadoop01格式化namenode
若journalnode正常启动,namenode格式出现问题,大概率是文件夹/export/service/hadoop-3.3.4/tmp权限不足,因此必要给这个文件夹授权
- sudo chmod -R 777 /export/service/hadoop-3.3.4/tmp
复制代码 在hadoop01启动namenode
- hdfs --daemon start namenode
复制代码 将hadoop01节点上namenode的数据同步到其他nameNode节点,在hadoop02、hadoop03节点执行:
- hdfs namenode -bootstrapStandby
复制代码 欣赏器访问NameNode,当前所有NameNode都是standby状态:
- http://192.168.174.201:9870/
- http://192.168.174.202:9870/
- http://192.168.174.203:9870/
复制代码 4、启动所有其他服务,包括zkfc
编写hadoop一键启动脚本
- sudo vim /home/hadoop/bin/hdp.sh
复制代码- #!/bin/bash
- if [ $# -lt 1 ]
- then
- echo "No Args Input..."
- exit ;
- fi
- case $1 in
- "start")
- echo " =================== 启动 hadoop集群 ==================="
- echo " --------------- 启动 hdfs ---------------"
- ssh hadoop01 "/export/service/hadoop-3.3.4/sbin/start-dfs.sh"
- echo " --------------- 启动 yarn ---------------"
- ssh hadoop02 "/export/service/hadoop-3.3.4/sbin/start-yarn.sh"
- echo " --------------- 启动 historyserver ---------------"
- ssh hadoop03 "/export/service/hadoop-3.3.4/bin/mapred --daemon start historyserver"
- ;;
- "stop")
- echo " =================== 关闭 hadoop集群 ==================="
- echo " --------------- 关闭 historyserver ---------------"
- ssh hadoop01 "/export/service/hadoop-3.3.4/bin/mapred --daemon stop historyserver"
- echo " --------------- 关闭 yarn ---------------"
- ssh hadoop02 "/export/service/hadoop-3.3.4/sbin/stop-yarn.sh"
- echo " --------------- 关闭 hdfs ---------------"
- ssh hadoop03 "/export/service/hadoop-3.3.4/sbin/stop-dfs.sh"
- ;;
- *)
- echo "Input Args Error..."
- ;;
- esac
- xcall jps
复制代码 授权限
!!注意 关机之前必须要关闭hadoop,否则namenode和datanode在下次启动大概率会出现故障
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |