一、zookeeper搭建
1、上传安装包到master并解压
tar -xvf zookeeper-3.5.7.tar.gz
2、配置环境变量
vim /etc/profile export ZOOKEEPER_HOME=/usr/local/soft/zookeeper-3.5.7 export PATH=$PATH:$ZOOKEEPER_HOME/bin source /etc/profile
3、修改配置文件
cd conf cp zoo_sample.cfg zoo.cfg
修改
dataDir=/usr/local/soft/zookeeper-3.5.7/data
增加
server.0=master:2888:3888
server.1=node1:2888:3888
server.2=node2:2888:3888
4、同步到其它节点
scp -r zookeeper-3.5.7node1:`pwd` scp -r zookeeper-3.5.7 node2:`pwd`
配置node1和node2的环境变量
scp /etc/profile node1:/etc/
scp /etc/profile node2:/etc/
在所有节点执行
source /etc/profile
4、创建/usr/local/soft/zookeeper-35.7/data目录,所有节点都要创建
mkdir /usr/local/soft/zookeeper-3.5.7/data 在data目录下创建myid文件 vim myid master,node1,node2分别加上0,1,2
5、启动zk, zkServer.sh start 三台都需要执行
zkServer.sh status 查看状态 当有一个leader的时候启动成功
连接zk zkCli.sh
zk 是一个目录结构 ,每个节点可以存数据,同时可以有子节点
zk shell
创建目录 create /test test create /test/a 1 获取数据 get /test ls /test delete 只能删除没有子节点的节点 rmr /test 删除节点
关闭命令
zkServer.sh stop
拍摄快照
重置zk
1、杀掉所有zk进程 kiil -9 pid
2、删除data目录下的version文件, 所有节点都要删除 rm -rf /usr/local/soft/zookeeper-3.5.7/data/version-2
2、启动zk zkServer.sh start
二、搭建Hadoop-HA
1、防火墙
service firewalld stop
2、时间同步
yum install ntp
ntpdate -u s2c.time.edu.cn
3、免密钥 (远程执行命令)
在两个主节点生成密钥文件
ssh-keygen -t rsa
ssh-copy-id ip
master-->master,node1,node2
node1-->master,node1,node2
4、修改hadoop配置文件
停止HDFS集群:stop-dfs.sh
cd /usr/local/soft/hadoop-3.1.1/etc/hadoop/
core-site.xml
添加 <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://cluster</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/usr/local/soft/hadoop-3.1.1/tmp</value> </property> <property> <name>fs.trash.interval</name> <value>1440</value> </property> <property> <name>ha.zookeeper.quorum</name> <value>master:2181,node1:2181,node2:2181</value> </property> </configuration>
hdfs-site.xml
<configuration> <!-- 指定hdfs元数据存储的路径 (文件夹会自动创建)--> <property> <name>dfs.namenode.name.dir</name> <value>/usr/local/soft/hadoop-3.1.1/data/namenode</value> </property> <!-- 指定hdfs数据存储的路径 --> <property> <name>dfs.datanode.data.dir</name> <value>/usr/local/soft/hadoop-3.1.1/data/datanode</value> </property> <!-- 数据备份的个数 --> <property> <name>dfs.replication</name> <value>1</value> </property> <!-- 关闭权限验证 --> <property> <name>dfs.permissions.enabled</name> <value>false</value> </property> <!-- 开启WebHDFS功能(基于REST的接口服务) --> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> <!-- //////////////以下为HDFS HA的配置////////////// --> <!-- 指定hdfs的nameservices名称为mycluster --> <property> <name>dfs.nameservices</name> <value>cluster</value> </property> <!-- 指定cluster的两个namenode的名称分别为nn1,nn2 --> <property> <name>dfs.ha.namenodes.cluster</name> <value>nn1,nn2</value> </property> <!-- 配置nn1,nn2的rpc通信端口 --> <property> <name>dfs.namenode.rpc-address.cluster.nn1</name> <value>master:8020</value> </property> <property> <name>dfs.namenode.rpc-address.cluster.nn2</name> <value>node1:8020</value> </property> <!-- 配置nn1,nn2的http通信端口 --> <property> <name>dfs.namenode.http-address.cluster.nn1</name> <value>master:9870</value> </property> <property> <name>dfs.namenode.http-address.cluster.nn2</name> <value>node1:9870</value> </property> <!-- 指定namenode元数据存储在journalnode中的路径 --> <property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://master:8485;node1:8485;node2:8485/cluster</value> </property> <!-- 指定journalnode日志文件存储的路径 --> <property> <name>dfs.journalnode.edits.dir</name> <value>/usr/local/soft/hadoop-3.1.1/data/journal</value> </property> <!-- 指定HDFS客户端连接active namenode的java类 --> <property> <name>dfs.client.failover.proxy.provider.cluster</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> </property> <!-- 配置隔离机制为ssh --> <property> <name>dfs.ha.fencing.methods</name> <value> sshfence shell(/bin/true) </value> </property> <!-- 指定秘钥的位置 --> <property> <name>dfs.ha.fencing.ssh.private-key-files</name> <value>/root/.ssh/id_rsa</value> </property> <!-- 开启自动故障转移 --> <property> <name>dfs.ha.automatic-failover.enabled</name> <value>true</value> </property> </configuration>
将yarn-site.xml也一并配置
添加 <configuration> <!-- NodeManager上运行的附属服务,需配置成mapreduce_shuffle才可运行MapReduce程序 --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!-- 开启日志 --> <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <!-- 配置日志删除时间为7天,-1为禁用,单位为秒 --> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>604800</value> </property> <!-- //////////////以下为YARN HA的配置////////////// --> <!-- 开启YARN HA --> <property> <name>yarn.resourcemanager.ha.enabled</name> <value>true</value> </property> <!-- 启用自动故障转移 --> <property> <name>yarn.resourcemanager.ha.automatic-failover.enabled</name> <value>true</value> </property> <!-- 指定YARN HA的名称 --> <property> <name>yarn.resourcemanager.cluster-id</name> <value>yarncluster</value> </property> <!-- 指定两个resourcemanager的名称 --> <property> <name>yarn.resourcemanager.ha.rm-ids</name> <value>rm1,rm2</value> </property> <!-- 配置rm1,rm2的主机 --> <property> <name>yarn.resourcemanager.hostname.rm1</name> <value>master</value> </property> <property> <name>yarn.resourcemanager.hostname.rm2</name> <value>node1</value> </property> <!-- 配置YARN的http端口 --> <property> <name>yarn.resourcemanager.webapp.address.rm1</name> <value>master:8088</value> </property> <property> <name>yarn.resourcemanager.webapp.address.rm2</name> <value>node1:8088</value> </property> <!-- 配置zookeeper的地址 --> <property> <name>yarn.resourcemanager.zk-address</name> <value>master:2181,node1:2181,node2:2181</value> </property> <!-- 配置zookeeper的存储位置 --> <property> <name>yarn.resourcemanager.zk-state-store.parent-path</name> <value>/rmstore</value> </property> <!-- 开启yarn resourcemanager restart --> <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> <!-- 配置nodemanager IPC的通信端口 --> <property> <name>yarn.nodemanager.address</name> <value>0.0.0.0:45454</value> </property> </configuration>
修改 hadoop-env.sh
添加权限
export HDFS_JOURNALNODE_USER=root
export HDFS_ZKFC_USER=root
5、删除hadoop数据存储目录下的文件 每个节点都需要删除
rm -rf /usr/local/soft/hadoop-3.1.1/tmp
同步到其它节点(直接将node1,node2 上的hadoop-3.1.1 删除 重新将master的hadoop-3.1.1同步过去
cd /usr/local/soft
scp -r hadoop-3.1.1 node1:`pwd`
scp -r hadoop-3.1.1 node2:`pwd`
6、启动zookeeper 三台都需要启动
zkServer.sh start
zkServer.sh status
7、启动JN 存储hdfs元数据
三台JN上执行 启动命令:
/usr/local/soft/hadoop-3.1.1/sbin/hadoop-daemon.sh start journalnode
8、格式化 在一台NN上执行,这里选择master
hdfs namenode -format
启动当前的NN
hadoop-daemon.sh start namenode
9、执行同步 没有格式化的NN上执行 在另外一个namenode上面执行 这里选择node1
/usr/local/soft/hadoop-3.1.1/bin/hdfs namenode -bootstrapStandby
10、格式化ZK 在master上面执行
!!一定要先 把zk集群正常 启动起来
/usr/local/soft/hadoop-3.1.1/bin/hdfs zkfc -formatZK
11、启动hdfs集群,在master上执行
start-dfs.sh
标签:可用,hadoop,yarn,集群,dfs,node1,master,local,搭建 From: https://www.cnblogs.com/SIKE231310/p/17864120.html