准备三台虚拟机 bigdata007,bigdata008,bigdata009
1.前置工作
1.修改虚拟机的IP地址和hostname
2.配置集群中的ip映射(/etc/hosts)
192.168.111.57 bigdata007
192.168.111.58 bigdata008
192.168.111.59 bigdata009
3.关闭虚拟机的防火墙
4.集群间实现免密登录
ssh root@bigdata007
ssh-keygen -t rsa
ssh-copy-id bigdat007
ssh-copy-id bigdat008
ssh-copy-id bigdat009
每台虚拟机都执行类似操作
2.安装zookeeper
导入安装包,解压到/opt/softs目录
tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /opt/softs/
修改包名 mv apache-zookeeper-3.5.7-bin/ zookeeper3.5.7
cd ../
在/zookeeper3.5.7目录下创建zkData目录,
里面创建文件myid写入id
配置文件
进入**/opt/softs/zookeeper3.5.7/conf **目录
删除log4j.properties
上传新的
# 定义日志输出路径
log4j.appender.file.File=/opt/softs/zookeeper3.5.7/logs/zookeeper.log
# 定义日志轮循策略,按天轮循
log4j.appender.file.DatePattern='.'yyyy-MM-dd
log4j.appender.file.append=true
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ISO8601} [%t] %-5p %c{1}:%L - %m%n
重要路径
在
/opt/softs/zookeeper3.5.7 目录下
创建logs目录
修改文件名
zoo_sample.cfg 为 zoo.cfg
修改zoo.cfg
添加
分发给其他两台虚拟机
scp -r zookeeper3.5.7/ root@bigdata008:/opt/softs/
修改各个虚拟机上的myid
配置环境变量 /etc/profile
#JAVA_HOME
export JAVA_HOME=/opt/softs/jdk1.8.0
export PATH=$PATH:$JAVA_HOME/bin
#ZK_HOME
export ZK_HOME=/opt/softs/zookeeper3.5.7
export PATH=$PATH:$ZK_HOME/bin
记得source一下 source /etc/profile
,直接分发
scp /etc/profile root@bigdata008:/etc/
添加启动脚本
创建目录 /opt/shell
导入脚本
#!/bin/bash
# 在调用shell脚本时,需要传入一个参数,用于标识执行开启或者关闭zk集群的开启关闭和查询状态
#判断调用shell脚本时 是否正常的传入参数
#参数小于1
if [ $# -lt 1 ]
then
echo "调用该脚本时需要传入一个参数"
exit ;
fi
#传入的第一个参数 有三种情况
case $1 in
"start")
echo "----------启动zk集群----------"
for hostname in bigdata007 bigdata008 bigdata009
do
echo "-------------$hostname------------"
ssh $hostname "/opt/softs/zookeeper3.5.7/bin/zkServer.sh start"
done
;;
"stop")
echo "----------关闭hadoop集群----------"
for hostname in bigdata007 bigdata008 bigdata009
do
echo "-------------$hostname------------"
ssh $hostname "/opt/softs/zookeeper3.5.7/bin/zkServer.sh stop"
done
;;
"status")
echo "----------查询zk集群状态-------------"
for hostname in bigdata007 bigdata008 bigdata009
do
echo "-------------$hostname------------"
ssh $hostname "/opt/softs/zookeeper3.5.7/bin/zkServer.sh status"
done
;;
*)
echo "输入的参数不符合脚本运行的规则,请输入start或者stop,status"
;;
esac
将JAVA_HOME=/opt/softs/jdk1.8.0
写入zkServer.sh
分发给其他虚拟机
scp zkServer.sh root@bigdata008:/opt/softs/zookeeper3.5.7/bin/
运行sh /opt/shell/my_zk.sh start 检查脚本是否成功
2.进行集群规划
bigdata007bigdata008bigdata009hdfsNameNode DataNodeNameNode DataNode DataNodezk有有有yarnNodeManagerNodeManager,ResourceManagerNodeManager,ResourceManager
** **
** 3.上传hadoop安装包**
解压
4.修改配置文件
进入目录
/opt/softs/hadoop3.1.3/etc/hadoop
在hadoop-env.sh 中添加
core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- hdfs地址,ha中是连接到nameservice -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://mycluster</value>
</property>
<!-- 指定hadoop数据的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/softs/hadoop3.1.3/data</value>
</property>
<!-- 故障转移 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>bigdata007:2181,bigdata008:2181,bigdata009:2181</value>
</property>
<!-- 解决HDFS web页面上删除、创建文件权限不足的问题 -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
</configuration>
hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 为namenode集群定义一个services name -->
<property>
<name>dfs.nameservices</name>
<value>mycluster</value>
</property>
<!-- nameservice包含哪些namenode,为各个namenode起名 -->
<property>
<name>dfs.ha.namenodes.mycluster</name>
<value>nn1,nn2</value>
</property>
<!-- 名称为nn1的namenode的rpc地址和端口号,rpc用来和datanode通讯 -->
<property>
<name>dfs.namenode.rpc-address.mycluster.nn1</name>
<value>bigdata007:8020</value>
</property>
<!-- 名称为nn2的namenode的rpc地址和端口号,rpc用来和datanode通讯 -->
<property>
<name>dfs.namenode.rpc-address.mycluster.nn2</name>
<value>bigdata008:8020</value>
</property>
<!-- 名称为nn1的namenode的http地址和端口号,web客户端 -->
<property>
<name>dfs.namenode.http-address.mycluster.nn1</name>
<value>bigdata007:50070</value>
</property>
<!-- 名称为nn2的namenode的http地址和端口号,web客户端 -->
<property>
<name>dfs.namenode.http-address.mycluster.nn2</name>
<value>bigdata008:50070</value>
</property>
<!-- namenode间用于共享编辑日志的journal节点列表 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://bigdata007:8485;bigdata008:8485;bigdata009:8485/mycluster</value>
</property>
<!-- journalnode 上用于存放edits日志的目录 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/opt/softs/hadoop3.1.3/data/dfs/jn</value>
</property>
<!-- 客户端连接可用状态的NameNode所用的代理类 -->
<property>
<name>dfs.client.failover.proxy.provider.ns1</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!--sshfence:防止namenode脑裂,当脑裂时,会自动通过ssh到old-active将其杀掉,将standby切换为active -->
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<!--ssh密钥文件路径-->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property>
<!-- 故障转移设置为ture -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
</configuration>
mapred-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!--指定mapreduce运行在yarn框架上-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!--设置mapreduce的历史服务器安装在bigdata007节点上-->
<property>
<name>mapreduce.jobhistory.address</name>
<value>bigdata007:10020</value>
</property>
<!--设置历史服务器的web页面地址和端口号-->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>bigdata007:19888</value>
</property>
</configuration>
yarn-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 配置yarn的默认混洗方式,选择为mapreduce的默认混洗算法 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 是否启用日志聚集功能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 是配置聚集的日志在HDFS上最多保存多长时间 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>106800</value>
</property>
<!-- 启用resourcemanager的ha功能 -->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!-- 为resourcemanage ha集群起个id -->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yarn-cluster</value>
</property>
<!-- 指定resourcemanger ha有哪些节点名 -->
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<!-- 指定第一个节点的所在节点 -->
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>bigdata008</value>
</property>
<!-- 指定第二个节点所在机器 -->
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>bigdata009</value>
</property>
<!-- 指定resourcemanger ha所用的zookeeper节点 -->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>bigdata007:2181,bigdata008:2181,bigdata009:2181</value>
</property>
<!-- 开启Recovery后,ResourceManger会将应用的状态等信息保存到yarn.resourcemanager.store.class配置的存储介质中,重启后会load这些信息,并且NodeManger会将还在运行的container信息同步到ResourceManager,整个过程不影响作业的正常运行。 -->
<property>
<name>yarn.resourcemanager.recovery.enabled</name>
<value>true</value>
</property>
<!-- 指定yarn.resourcemanager.store.class的存储介质(HA集群只支持ZKRMStateStore) -->
<property>
<name>yarn.resourcemanager.store.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>
</configuration>
配置运行hadoop中的works
hadoop分发到别的目录
scp -r hadoop3.1.3/ root@bigdata008:/opt/softs/
再次/etc/profile 配置文件
#HADOOP_HOME
export HADOOP_HOME=/opt/softs/hadoop3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HADOOP_CONF_DIR=/opt/softs/hadoop3.1.3/etc/hadoop
export HADOOP_CLASSPATH=`hadoop classpath`
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
配置完成后,传给其他两台虚拟机上,记得source一下
NameNode初始化
1.在每个节点上启动journalnode
hadoop-daemon.sh start journalnode
2.在每个节点上启动zk
zkServer.sh start
3.在某一个NameNode节点(bigdata007)上对NameNode进行初始化
hdfs namenode -format
启动NameNode并进行同步
1.在bigdata007上执行NameNode的启动
hadoop-daemon.sh start namenode
2.在另外一个NameNode节点(bigdata008)上同步元数据信息,然后再启动NameNode
--同步元数据
hdfs namenode -bootstrapStandby
--启动NameNode
hadoop-daemon.sh start namenode
进行zk的初始化
在bigdata007上执行zk的初始化
hdfs zkfc -formatZK
启动hdfs和yarn
start-dfs.sh
start-yarn.sh
windows配置文件
用浏览器访问
07是活跃的
yarn的
有一个处于活跃状态
版权归原作者 天才的白鸟 所有, 如有侵权,请联系我们删除。