搭建高可用hadoop集群
来源:互联网 发布:c语言strlen 编辑:程序博客网 时间:2024/05/17 07:12
环境说明:
red-hat 6.7
hadoop-2.7.3
zookeeper-3.4.9
jdk1.8.0_131
备注:我将所有需要的包,都放置在/usr/local/路径下了
本次环境搭建的机器总共为3台
192.168.40.140 hd1 主节点
192.168.40.141 hd2 主备节点
192.168.40.142 hd3 从节点
若集群安装成功,各个节点的进程说明:
hd1:namenoderesouremanager datanodeQuorumPeerMain journalnodeZKFC
hd2:namenode resouremanagerdatanode QuorumPeerMainjournalnode ZKFC
hd3:nodemanager datanodeQuorumPeerMain journalnode
环境前期准备:
第一步:
更改主机名(有两种方式)
方法一:在shell命令模式下,直接输入hostname hd1则可将当前主机名更改为hd1,但是此方法只能临时生效,重启后将失效
方法二(推荐):vi /etc/sysconfig/network,此方法需要重启 才生效,并且永久生效
192.168.40.140更改主机名为 hd1
192.168.40.141更改主机名为 hd2
192.168.40.143更改主机名为 hd3
第二步:修改域名关系(所有机器都需修改)
vi /etc/hosts 添加如下内容
192.168.40.140 hd1
192.168.40.141 hd2
192.168.40.142 hd3
第三步:创建hadoop用户(所有机器都需修改)
useradd hadoop
为hadoop用户创建密码
passwd hadoop (敲入此命令回车,输入密码即可,密码将隐藏不见)
第四步:安装JDK(所有机器都需修改)
解压jdk-8u131-linux-x64.tar 到/usr下
第五步:修改环境变量 vi /etc/profile (所有机器都需修改)
export JAVA_HOME=/usr/jdk1.8.0_131
export JAVA_BIN=/usr/jdk1.8.0_131/bin
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH
第六步:使环境变量生效 source /etc/profile (所有机器都需要执行)
第七步:切换到hadoop用户(所有机器都执行)
第八步:做免密钥登录(所有机器都执行)
产生密钥:ssh-keygen -t rsa
将密钥拷贝到其他节点
ssh-copy-id -i /home/hadoop/.ssh/id_rsa.pub hd1
ssh-copy-id -i /home/hadoop/.ssh/id_rsa.pub hd2
ssh-copy-id -i /home/hadoop/.ssh/id_rsa.pub hd3
安装zookeeper集群(只需要主节点执行)
第一步:解压zookeeper软件包
tar -zxvf zookeeper-3.4.9.tar.gz -C /usr/local
第二步:修改配置文件
cd /usr/local/zookeeper-3.4.9/conf/
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg
修改dataDir=/usr/local/zookeeper-3.4.9/tmp
在配置文件最后添加
server.1=hd1:2888:3888
server.2=hd2:2888:3888
server.3=hd3:2888:3888
2.1 创建tmp目录(需在/usr/local/zookeeper-3.4.9目录下执行
mkdir tmp
2.2 将配置好的zookeeper复制到其他节点
scp -r /usr/local/zookeeper-3.4.9/ hd2:/usr/local
scp -r /usr/local/zookeeper-3.4.9/ hd3:/usr/local
2.3 在hd1机器上修改文件
vi /usr/local/zookeeper-3.4.9/tmp/myid
输入1 (本值与上面的server.1保持一致)
2.4 在hd2机器上修改文件
vi /usr/local/zookeeper-3.4.9/tmp/myid
输入2 (本值与上面的server.2保持一致)
2.5 在hd1机器上修改文件
vi /usr/local/zookeeper-3.4.9/tmp/myid
输入3 (本值与上面的server.3保持一致)
注意修改tmp/myid
安装hadoop集群(主节点执行即可)
第一步:解压软件包
tar -zxvf hadoop-2.7.3.tar.gz -C /usr/local
第二步:配置hadoop用户的环境变量,需要到hadoop的家目录下执行
vi .bash_profile
添加
export JAVA_HOME=/usr/jdk1.8.0_131
export HADOOP_HOME=/usr/local/hadoop-2.7.3
export PATH=$PATH:$JAVA_HOME/bin:/$HADOOP_HOME/bin
第三步:修改配置文件(配置文件都在$HADOOP_HOME/etc/hadoop目录下面)
3.1 vi hadoop-env.shvi hadoop-env.sh
添加 export JAVA_HOME=/usr/jdk1.8.0_131
3.2 vi core-site.xml(注意,将所有参数配置都加在<configuration></configuration>标签对里面,若文件里面有这个标签了,就不用再将 下方的<configuration></configuration>标签写入,后面参数配置都是如此,需细心)
<configuration>
<!-- 指定hdfs的nameservice为ns1 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://bi/</value>
</property>
<!-- 指定hadoop临时目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hdpdata/</value>
</property>
<!-- 指定zookeeper地址 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>hd1:2181,hd2:2181,hd3:2181</value>
</property>
</configuration>
注:/usr/local/hdpdata目录,需要自己创建
3.3 vi hdfs-site.xml
<configuration>
<!--指定hdfs的nameservice为bi,需要和core-site.xml中的保持一致 -->
<property>
<name>dfs.nameservices</name>
<value>bi</value>
</property>
<!-- bi下面有两个NameNode,分别是nn1,nn2 -->
<property>
<name>dfs.ha.namenodes.bi</name>
<value>nn1,nn2</value>
</property>
<!-- nn1的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.bi.nn1</name>
<value>hd1:9000</value>
</property>
<!-- nn1的http通信地址 -->
<property>
<name>dfs.namenode.http-address.bi.nn1</name>
<value>hd1:50070</value>
</property>
<!-- nn2的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.bi.nn2</name>
<value>hd2:9000</value>
</property>
<!-- nn2的http通信地址 -->
<property>
<name>dfs.namenode.http-address.bi.nn2</name>
<value>hd2:50070</value>
</property>
<!-- 指定NameNode的edits元数据在JournalNode上的存放位置 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hd1:8485;hd2:8485;hd3:8485/bi</value>
</property>
<!-- 指定JournalNode在本地磁盘存放数据的位置 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/usr/local/journaldata</value>
</property>
<!-- 开启NameNode失败自动切换 -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!-- 配置失败自动切换实现方式 -->
<property>
<name>dfs.client.failover.proxy.provider.bi</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行-->
<property>
<name>dfs.ha.fencing.methods</name>
<value>
sshfence
shell(/bin/true)
</value>
</property>
<!-- 使用sshfence隔离机制时需要ssh免登陆 -->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/hadoop/.ssh/id_rsa</value>
</property>
<!-- 配置sshfence隔离机制超时时间 -->
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
</configuration>
注:/usr/local/journaldata<目录,需要自己创建
3.4 vi mapreduce-site.xml
<configuration>
<!-- 指定mr框架为yarn方式 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
3.5 vi yarn-site.xml
<configuration>
<!-- 开启RM高可用 -->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!-- 指定RM的cluster id -->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yrc</value>
</property>
<!-- 指定RM的名字 -->
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<!-- 分别指定RM的地址 -->
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>hd1</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>hd2</value>
</property>
<!-- 指定zk集群地址 -->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>hd1:2181,hd2:2181,hd3:2181</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
3.6 vi slaves
hd1
hd2
hd3
第四步:配置好的hadoop拷贝到其他节点
scp -r /usr/local/hadoop-2.7.3 hd2:/usr/local
scp -r /usr/local/hadoop-2.7.3 hd3:/usr/local
第五步:开启集群(许先将zookeeper开启)
到zookeeper安装目录(所有机器都需要执行)
cd /usr/local/zookeeper-3.4.9/bin
第六步、启动集群严格按照下面步骤
6.1、启动zookeeper集群(三台都要启动)
./zkServer.sh start
查看状态
./zkServer.sh status
查看zookeeper是否成功
./zkServer.sh status查看zookeeper状态,若有一个leader,其他为follwer则是成功
6.2、启动journalnode(三台都要启动)
cd /hadoop-2.7.3
sbin/hadoop-daemon.sh start journalnode
jps命令查看进程
6.3、格式化HDFS(只能格式化一次)
hdfs namenode -format
格式化后会根据core-site.xml生成hadoop.tmp.dir,将目录复制到hd2节点上
scp -r tmp/ hd2:/usr/local/hadoop-2.7.3/
6.4、格式化ZKFC(在hd1上执行一次即可)
hdfs zkfc -formatZK
6.5、启动呢HDFS(在hd1上执行)
./start-dfs.sh
6.6、启动YARN(在hd1上执行)
./start-yarn.sh
6.7 另外一个节点上启动resourcemanager
./yarn-daemon.sh start resourcemanager
可以在浏览器上面访问hd1:50070、hd2:50070
查看hdfs的各节点状态信息bin/hdfs dfsadmin -report
获取一个namenode节点的HA状态bin/hdfs haadmin -getServiceState nn1
手动进行active和standly状态的切换bin/hdfs haadmin -failover nn1 nn2(将nn1的active状态切换到nn2上)
单独启动一个namenode进程sbin/hadoop-daemon.sh start namenode
单独启动一个zkfc进程./hadoop-daemon.sh start zkfc
- hadoop 高可用集群搭建
- 搭建高可用hadoop集群
- hadoop 集群高可用环境搭建(zookeeper)
- hadoop HA 高可用集群部署搭建
- Hadoop高可用HDFS集群搭建详解
- Hadoop HA高可用集群搭建
- Hadoop高可用集群搭建(HA)
- Hadoop,HBase高可用集群搭建
- Hadoop HA 高可用集群搭建
- Hadoop集群HA高可用搭建
- Hadoop HA高可用集群搭建总结
- Hadoop 搭建高可用完全分布式集群
- 搭建 hadoop ha 高可用集群
- Hadoop集群(高可用)
- Hadoop HA高可用集群搭建(Hadoop+Zookeeper+HBase)
- 利用ubuntu搭建高可用的hadoop集群
- 利用ubuntu12.04搭建高可用的hadoop集群
- Hadoop HA高可用集群搭建(2.7.2)
- 网络编程(基于winsocket)-- I/O操作模型介绍--I/0复用模型
- Web缓存系统ehcache/Memcached/Redis/MongoDB及Nosql引入
- ES6中的常量声明——const关键字
- (6)数据挖掘算法之PageRank
- CentOS6.5修改主机名
- 搭建高可用hadoop集群
- jsp传递list对象到后台
- 继承和派生--包含子对象的子类的构造函数
- Java JDK 版本切换
- JavaScript的知识点(三)
- (7)数据挖掘算法之kNN
- 中位数
- 读取键盘的方向键
- vue-router