基于原生态Hadoop2.6 HA集群环境的搭建
hadoop2.6 HA平台搭建
一、条件准备
软件条件:
Ubuntu14.04 64位操作系统, jdk1.7 64位,Hadoop 2.6.0, zookeeper 3.4.6
硬件条件:
1台主节点机器,配置:cpu 8个,内存32G,硬盘200G
5台从节点机器,配置均为:cpu 4个,内存16G,硬盘200G
各个节点IP如下:
服务器名字 |
Ip地址 |
备注(为方便操作将hostname改为如下) |
Hd-Name Node |
192.168.0.10 |
master |
192.168.0.16 |
slave1 |
|
Hd-Data Node 2 |
192.168.0.12 |
slave2 |
Hd-Data Node 3 |
192.168.0.18 |
slave3 |
Hd-Data Node 4 |
192.168.0.13 |
slave4 |
Hd-Data Node 5 |
192.168.0.14 |
slave5 |
搭建预期结构
hostname |
软件 |
进程 |
master |
JDK,hadoop |
Namenode, ZKFC , resourcemanager |
slave1 |
JDK,hadoop |
Zookeer, datanode, journalnode, quorumpeermain, nodemanager |
slave2 |
JDK,hadoop |
Zookeer, datanode, journalnode, quorumpeermain, nodemanager |
slave3 |
JDK,hadoop |
Zookeer, datanode, journalnode, quorumpeermain, nodemanager |
slave4 |
JDK,hadoop |
Namenode,ZKFC, resourcemanager(2主节点启动一个) |
slave5 |
JDK,hadoop |
Datanode,nodemanager |
说明:zookeeper搭建在3台机器上,master和slave4作为2个namenode结点,剩下的节点为
注(1)以上机器的登录名密码均为:root 2015
(2)由于只有一台集群外的机器绑定公网,所以通过它,才能访问这6个节点。公网ip:10.120.21.116 用户名:root 密码:2015
二、搭建过程
1.搭建前的配置
1》修改主机名字
通过xshell,远程登录主机10.120.21.116,输入用户名:root,密码2015.登录成功后。执行命令:ssh 192.168.0.10。进入Hd-Name Node机器。然后执行命令:
vi /etc/hosts 进入文件编辑,加入以下内容:
192.168.0.10 master
192.168.0.16 slave1
192.168.0.12 slave2
192.168.0.18 slave3
192.168.0.13 slave4
192.168.0.14 slave5
然后保存退出。然后继续执行命令:
vi /etc/hostname 编辑主机名字为:master
接着执行命令:hostname master。
分别执行命令远程拷贝hosts文件到各个节点,覆盖掉本身的hosts文件。
scp –r /etc/hosts root@192.168.0.16:/etc/
scp –r /etc/hosts root@192.168.0.12:/etc/
scp –r /etc/hosts root@192.168.0.18:/etc/
scp –r /etc/hosts root@192.168.0.13:/etc/
scp –r /etc/hosts root@192.168.0.14:/etc/
然后执行ssh 192.168.0.** 分别登录到各个子节点,修改他们的hostname。进入hostname文件。名字分别改成,slave1,slave2,slave3,slave4,slave5.保存退出。然后分别执行命令:hostname slave1 ,hostname slave2,…这样可以 ssh master 这样登录了。
注意:1.如果ssh命令不能用,可能机器本身没有ssh,需要安装:执行命令:
apt-get install ssh。
2.确保各个节点能相互ping通,如果ping不通,查看下防火墙是否关闭。
2》设置节点间的远程无密码登录
执行命令:ssh master 切换到主节点。执行命令:
- ssh-keygen –t rsa ,进入目录/root/.ssh/,发现多了三文件:authorized_keys,id_rsa,id_rsa.pub
- 执行命令 cp ~/.ssh/id_rsa.pub ~/.ssh.authorized_keys.
- 验证执行:ssh localhost,查看本节点是否可以无密码登录。
将授权文件拷贝到其他节点,执行命令:
scp authorized_keys root@slave1:~/.ssh/
scp id_rsa root@slave1:~/.ssh/
scp id_rsa.pub root@slave1:~/.ssh/,同样其他节点也执行这样的操作。执行完毕后,测试一下。节点之间能否相互之间无密码登录。
3》拷贝文件
通过WinSCP软件,登录主机10.120.21.116,输入用户名:root,密码2015。实现本地机器与远程机器的文件共享。将本机下的:hadoop2.6和jdk 1.7复制到主机10.120.21.116机器的 /usr/local/目录下。
通过xshell,远程登录主机10.120.21.116,输入用户名:root,密码2015.登录成功后,执然后将10.120.21.116下/usr/local/下的文件:hadoop2.6和jdk1.7安装包复制到,master机器上:/usr/local目录下。
执行命令: scp /usr/local/Hadoop-2.6.0-x64.tar.gz root@192.168.0.10:/usr/local/
scp /usr/local/jdk-7u79-linux-x64.gz root@192.168.0.10:/usr/local/
scp /usr/local/zookeeper3.4.6.gz root@192.168.0.10:/usr/local/
注意:可以通过wincp软件进行本地拷贝
2.安装zookeeper
2.1、条件准备
软件条件:
Ubuntu14.04 64位操作系统,jdk.7 64位, zookeeper 3.4.6
注意:zookeeper集群节点不能小于3个节点,各个服务器之间的时间要保持一致。
安装步骤:
这里将zookeeper搭建在3个节点上,各个节点的环境配置:
主机名 |
Ip地址 |
slave1 |
192.168.0.16 |
slave2 |
192.168.0.12 |
slave3 |
192.168.0.13 |
安装配置zookeeper集群(在master)
2.2解压
- 将 zookeeper拷贝到master节点/usr/local/目录下,在该目录下执行解压命令
tar –zxvf zookeeper-3.4.6.tar.gz
- 修改名字,执行
mv zookeeper-3.4.6.tar.gz zookeeper
2.3 修改配置
切换目录:cd /usr/local/zookeeper/conf/
执行命令:cp zoo_sample.cfg zoo.cfg
编辑文件:vim zoo.cfg
修改内容:
dataDir=/usr/local/zookeeper/zkdata
在最后添加:
server.1=slave1:2888:3888
server.2=slave2:2888:3888
server.3=slave3:2888:3888
保存退出
然后创建一个zkdata文件夹
mkdir /usr/local/zookeeper/zkdata
再创建一个空文件
touch /usr/local/zookeeper/zkdata/myid
最后向该文件写入ID
echo 0 > /usr/local/zookeeper/zkdata/myid
2.4将配置好的zookeeper拷贝到其他节点(首先分别在slave1、slave2,slave3根目录:/usr/local/)
scp –r /usr/local/zookeeper/ root@slave1:/usr/local
scp –r /usr/local/zookeeper/ root@slave2:/usr/local
scp –r /usr/local/zookeeper/ root@slave3:/usr/local
修改各个节点/usr/local/zookeeper/zkdata/myid的内容
slave1:echo 1 > /usr/local/zookeeper/zkdata/myid
slave2:echo 2 > /usr/local/zookeeper/zkdata/myid
slave3:echo 3 > /usr/local/zookeeper/zkdata/myid
注意,也可以用vi编辑修改
2.5配置环境变量
分别在各个节点执行命令 vi /etc/profile.添加如下:
export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
保存退出
立即生效:source /etc/profile
2.6启动与测试
zkServer.sh start
zkServer.sh status (注意:要将至少3节点开启,才不会出现问题,否则提示:连接失败,实际并不影响,只要全部开启了,提示自然不存在)
3.安装hadoop
3.1解压文件
执行:ssh 192.168.0.10,登录到master机器。
切换到目录:cd /usr/local 。执行命令:
tar -xvzf hadoop-2.6.0-x64.tar.gz
tar –xvzf jdk-7u79-linux-x64.gz。将两个文件解压。执行重命名命令:
mv hadoop-2.6.0-x64 hadoop
mv jdk-7u79-linux-x64 jdk
在/usr/local/hadoop下创建文件目录(目录自己创建)
mkdir tmp
mkdir dfs/data
mkdir dfs/name
3.2配置hadoop文件(关键)
进入目录:/usr/local/hadoop/etc/hadoop/
配置文件:hadoop-env.sh,打开它修改JAVA_HOME值为(export JAVA_HOME=/usr/local/jdk
export HADOOP_LOG_DIR=/usr/local/hadoop/log,在以下yarn-size.xml配置的文件目录
配置文件:yarn-env.sh,打开它修改JAVA_HOME值为(export JAVA_HOME=/usr/local/jdk)
export HADOOP_LOG_DIR=/usr/local/hadoop/log,
配置文件:slaves,打开它写入内容(写入nodename结点即可):
slave1
slave2
slave3
slave5
配置文件:core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://masters</value> --名字自定义
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value> --自己创建的临时目录
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>slave1:2181,slave2:2181,slave3:2181</value> --zookeeper装的机器
</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
<configuration>
<property>
<name>dfs.nameservices</name>
<value>masters</value> ---和core-size一致,自定义
</property>
<property>
<name>dfs.ha.namenodes.masters</name>
<value>master,slave4</value> 主节点是哪个主机
</property>
<property>
<name>dfs.namenode.rpc-address.masters.master</name>
<value>master:9000</value>
</property>
<property>
<name>dfs.namenode.http-address.masters.master</name>
<value>master:50070</value>
</property>
<property>
<name>dfs.namenode.rpc-address.masters.slave4</name>
<value>slave4:9000</value>
</property>
<property>
<name>dfs.namenode.http-address.masters.slave4</name>
<value>slave4:50070</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://slave1:8485;slave2:8485;slave3:8485/masters</value>--zookeeper一致
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/usr/local/hadoop/journal</value> --自己创建目录
</property>
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.masters</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
<name>dfs.ha.fencing.methods</name>
<value>
sshfence
</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value> --无密码登录一致,一般默认,但是这root权限下
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.journalnode.http-address</name>
<value>0.0.0.0:8480</value>
</property>
<property>
<name>dfs.journalnode.rpc-address</name>
<value>0.0.0.0:8485</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>slave1:2181,slave2:2181,slave3:2181</value>
</property>
</configuration>
配置文件:mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>0.0.0.0:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>0.0.0.0:19888</value>
</property>
</configuration>
配置文件:yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.connect.retry-interval.ms</name>
<value>2000</value>
</property>
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>slave1:2181,slave2:2181,slave3:2181</value>
</property>
<property>
<name>yarn.resourcemanager.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>master</value> ---俩namenode节点
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>slave4</value>
</property>
<property>
<name>yarn.resourcemanager.ha.id</name>
<value>rm1</value>
<description>If we want to launch more than one RM in single node, we need this configuration</description>
</property>
<property>
<name>yarn.resourcemanager.recovery.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.zk-state-store.address</name>
<value>slave1:2181,slave2:2181,slave3:2181</value>
</property>
<property>
<name>yarn.resourcemanager.store.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>slave1:2181,slave2:2181,slave3:2181</value>
</property>
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>masters-yarn</value> --集群名字和core一致
</property>
<property>
<name>yarn.app.mapreduce.am.scheduler.connection.wait.interval-ms</name>
<value>5000</value>
</property>
<property>
<name>yarn.resourcemanager.address.rm1</name>
<value>master:8132</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address.rm1</name>
<value>master:8130</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.rm1</name>
<value>master:8188</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address.rm1</name>
<value>master:8131</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address.rm1</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.ha.admin.address.rm1</name>
<value>master:23142</value>
</property>
<property>
<name>yarn.resourcemanager.address.rm2</name>
<value>slave4:8132</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address.rm2</name>
<value>slave4:8130</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.rm2</name>
<value>slave4:8188</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address.rm2</name>
<value>slave4:8131</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address.rm2</name>
<value>slave4:8033</value>
</property>
<property>
<name>yarn.resourcemanager.ha.admin.address.rm2</name>
<value>slave4:23142</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>/usr/local/hadoop/yarn</value> --自己创建
</property>
<property>
<name>yarn.nodemanager.log-dirs</name>
<value>/usr/local/hadoop/log</value> --自己创建
</property>
<property>
<name>mapreduce.shuffle.port</name>
<value>23080</value>
</property>
<property>
<name>yarn.client.failover-proxy-provider</name>
<value>org.apache.hadoop.yarn.client.ConfiguredRMFailoverProxyProvider</value>
</property>
<property>
<name>yarn.resourcemanager.ha.automatic-failover.zk-base-path</name>
<value>/yarn-leader-election</value>
<description>Optional setting. The default value is /yarn-leader-election</description>
</property>
</configuration>
注:红色部分需要自己根据实际情况修改
3.3 hadoop和jdk文件夹的复制
将mater节点。/usr/local/hadoop和/usr/local/jdk文件目录远程复制到其他节点,执行命令:
scp –r /usr/local/hadoop root@slave1:/usr/local/
scp –r /usr/local/jdk root@slave1:/usr/local/
…其它节点同样复制。
3.4配置环境变量
在master,slave1,slave2,slave3,slave4,slave5,配置环境变量。在/etc/profile目录下添加:
export PATH=$PATH:/usr/local/jdk/bin:/usr/local/jdk/jre/bin:/usr/local/hadoop/bin:/usr/local/hadoop/sbin
保存退出,执行命令:source /etc/profile让其立即生效。
4.启动测试集群
启动zookeeper集群(分别在slave1、slave2、slave3上启动zk)
进入到 zookeeper-3.4.5/bin/
执行命令: ./zkServer.sh start
查看状态 ./zkServer.sh status
(一个leader,两个follower)
单独进入到slave1,slave2,slave3执行
执行命令 sbin/hadoop-daemon.sh start journalnode
(运行jps命令检验,多了JournalNode进程)
格式化HDFS
在namenode1(master)上执行命令:
hadoop namenode -format
格式化后会在根据core-site.xml中的hadoop.tmp.dir配置生成个文件,之后通过sbin/hadoop-daemon.sh start namenode启动namenode进程
在namenode2(slave4)上执行hdfs namenode -bootstrapStandby完成主备节点同步信息
格式化ZK(在namenode1上执行即可)
hdfs zkfc -formatZK
启动HDFS(在namenode1上执行)
sbin/start-dfs.sh
启动YARN(在namenode1(master)和namenode2(slave4)上执行)
sbin/start-yarn.sh
注意在namenode2上执行此命令时会提示NodeManager已存在等信息不用管这些,主要是启动namenode2上的resourceManager完成与namenode1的互备作用,目前没有找到单独启动resourceManager的方法
查看所有进程是否都成功启动,最后执行自带的例子进行测试
--------------------------------------------------------------------------------------------------------------------------------------
8》验证与运行
执行命令:ssh master
格式化namenode节点,执行命令:hadoop namenode –format
启动hadoop,执行命令:start-all.sh
在master节点和其他从节点下执行命令:jps。查看相关进程是否启动:
在/usr/local/hadoop/share/hadoop/mapreduce目录下执行测试程序:
jadoop jar hadoop-mapreduce-exmaple-2.6.0.jar pi 2 19 ,观察测试结果。至此所有搭建过程完毕
基于原生态Hadoop2.6 HA集群环境的搭建的更多相关文章
- Linux下Hadoop2.7.3集群环境的搭建
Linux下Hadoop2.7.3集群环境的搭建 本文旨在提供最基本的,可以用于在生产环境进行Hadoop.HDFS分布式环境的搭建,对自己是个总结和整理,也能方便新人学习使用. 基础环境 JDK的安 ...
- Linux下Hadoop2.6.0集群环境的搭建
本文旨在提供最基本的,可以用于在生产环境进行Hadoop.HDFS分布式环境的搭建,对自己是个总结和整理,也能方便新人学习使用. 基础环境 JDK的安装与配置 现在直接到Oracle官网(http:/ ...
- Linux下Hadoop2.7.1集群环境的搭建(超详细版)
本文旨在提供最基本的,可以用于在生产环境进行Hadoop.HDFS分布式环境的搭建,对自己是个总结和整理,也能方便新人学习使用. 一.基础环境 ...
- Zookeeper Ha集群简介+jdbcClient访问Ha集群环境
Hadoop-HA机制HA概述high available(高可用) 所谓HA(high available),即高可用(7*24小时不中断服务). 实现高可用最关键的策略是消除单点故障.HA严格来说 ...
- hadoop2.8 ha 集群搭建
简介: 最近在看hadoop的一些知识,下面搭建一个ha (高可用)的hadoop完整分布式集群: hadoop的单机,伪分布式,分布式安装 hadoop2.8 集群 1 (伪分布式搭建 hadoop ...
- hadoop集群环境的搭建
hadoop集群环境的搭建 今天终于把hadoop集群环境给搭建起来了,能够运行单词统计的示例程序了. 集群信息如下: 主机名 Hadoop角色 Hadoop jps命令结果 Hadoop用户 Had ...
- Nacos集群环境的搭建与配置
Nacos集群环境的搭建与配置 集群搭建 一.环境: 服务器环境:CENTOS-7.4-64位 三台服务器IP:192.168.102.57:8848,192.168.102.59:8848,192. ...
- redis集群环境的搭建和错误分析
redis集群环境的搭建和错误分析 redis集群时,出现的几个异常问题 09 redis集群的搭建 以及遇到的问题
- 2-10 就业课(2.0)-oozie:10、伪分布式环境转换为HA集群环境
hadoop 的基础环境增强 HA模式 HA是为了保证我们的业务 系统 7 *24 的连续的高可用提出来的一种解决办法,现在hadoop当中的主节点,namenode以及resourceManager ...
随机推荐
- 编写高质量代码改善C#程序的157个建议——建议3: 区别对待强制转型与as和is
建议3: 区别对待强制转型与as和is 在阐述本建议之前,首先需要明确什么是强制转型,以及强制转型意味着什么.从语法结构上来看,类似下面的代码就是强制转型. secondType = (SecondT ...
- String类的subtring(,)
截取字符串,参数(起始位置,截取长度)
- android开关控件Switch和ToggleButton
序:今天项目中用到了开关按钮控件,查阅了一些资料特地写了这篇博客记录下. 1.Switch <Switch android:id="@+id/bt" android:layo ...
- Delphi7中的Char和XE中的Char
我用FillChar()函数时,发现两个版本中的Char不一样. 在delphi7中 procedure TForm2.Button1Click(Sender: TObject); var s: ar ...
- Oracle累计函数
今天遇到一个客户的报表需求,在shipment的报表中要查看该shipment中的每个PO的采购数量,当前shipment的出货数量以及累计的所有出货数量. 要有累计的出货数,并且是要有顺序的累计出货 ...
- 微信小程序设计稿pt怎么转rpx
什么是逻辑分辨率? 什么是物理分辨率? 什么是DPI?(Dots Per Inch) 最早的时候,这个单位是用来描述打印机的性能的,意思是每英寸能打多少个墨点,毫无疑问,DPI越高,打印出来的东西就会 ...
- 洛谷P3236 [HNOI2014]画框(最小乘积KM)
题面 传送门 题解 我似乎连\(KM\)都不会打啊→_→ 和bzoj2395是一样的,只不过把最小生成树换成\(KM\)了.因为\(KM\)跑的是最大权值所以取个反就行了 //minamoto #in ...
- [Swift实际操作]九、完整实例-(4)在项目中使用CocoaPod管理类库和插件
本文将为你演示,如何使用CocoaPod第三方类库管理工具,在项目中安装未来需要使用的类库.首先创建一份文本文件.可以使用一个脚本创建文件,你可以采用自己的方式是创建一份文本文件,接着在文件名称上点击 ...
- Ping命令简单报错介绍
了解ABC类IP地址:网络.主机.子网.广播. ---------------------------- 学会ping: ping www.baidu.com 网络检测:ping某一主机可以正常启动! ...
- js 自定义属性
html标签中有没有什么自带的属性可以存储成绩的----没有 本身html标签没有这个属性,自己(程序员)添加的,----自定义属性---为了存储一些数据 在html标签中添加的自定义属性,如果 ...