基于原生态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


Hd-Data Node 1


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, resourcemanager2主节点启动一个)


slave5


JDK,hadoop


Datanode,nodemanager

说明:zookeeper搭建在3台机器上,masterslave4作为2namenode结点,剩下的节点为

(1)以上机器的登录名密码均为:root  2015

  (2)由于只有一台集群外的机器绑定公网,所以通过它,才能访问这6个节点。公网ip10.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  [email protected]:/etc/

scp  –r  /etc/hosts  [email protected]:/etc/

scp  –r  /etc/hosts  [email protected]:/etc/

scp  –r  /etc/hosts  [email protected]:/etc/

scp  –r  /etc/hosts  [email protected]:/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 切换到主节点。执行命令:

  1. ssh-keygen –t rsa ,进入目录/root/.ssh/,发现多了三文件:authorized_keys,id_rsa,id_rsa.pub
  2. 执行命令 cp ~/.ssh/id_rsa.pub ~/.ssh.authorized_keys.
  3. 验证执行:ssh  localhost,查看本节点是否可以无密码登录。

将授权文件拷贝到其他节点,执行命令:

scp authorized_keys [email protected]:~/.ssh/

scp id_rsa [email protected]:~/.ssh/

scp id_rsa.pub [email protected]:~/.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  [email protected]:/usr/local/

scp   /usr/local/jdk-7u79-linux-x64.gz  [email protected]:/usr/local/

scp    /usr/local/zookeeper3.4.6.gz  [email protected]:/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解压

  1. 将 zookeeper拷贝到master节点/usr/local/目录下,在该目录下执行解压命令

tar –zxvf zookeeper-3.4.6.tar.gz

  1. 修改名字,执行

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拷贝到其他节点(首先分别在slave1slave2,slave3根目录:/usr/local/)

scp –r /usr/local/zookeeper/  [email protected]:/usr/local

scp –r /usr/local/zookeeper/  [email protected]:/usr/local

scp –r /usr/local/zookeeper/  [email protected]:/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 hadoopjdk文件夹的复制

将mater节点。/usr/local/hadoop和/usr/local/jdk文件目录远程复制到其他节点,执行命令:

scp –r /usr/local/hadoop  [email protected]:/usr/local/

scp –r /usr/local/jdk  [email protected]:/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 ,观察测试结果。至此所有搭建过程完毕

时间: 2025-01-04 16:45:42

基于原生态Hadoop2.6 HA集群环境的搭建的相关文章

Linux下Hadoop2.7.1集群环境的搭建(超详细版)

本文旨在提供最基本的,可以用于在生产环境进行Hadoop.HDFS分布式环境的搭建,对自己是个总结和整理,也能方便新人学习使用. 一.基础环境 在Linux上安装Hadoop之前,需要先安装两个程序: 1.1 安装说明 1. JDK 1.6或更高版本(本文所提到的安装的是jdk1.7); 2. SSH(安全外壳协议),推荐安装OpenSSH. 下面简述一下安装这两个程序的原因: 1. Hadoop是用Java开发的,Hadoop的编译及MapReduce的运行都需要使用JDK. 2. Hadoo

一步一步教你搭建基于docker的MongoDB复制集群环境

一步一步教你搭建基于docker的MongoDB复制集群环境 1.安装docker 2.创建MongoDB的Image 3.搭建MongoDB的集群 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中. 1.ubuntu14.04安装docker 参考文档 http://docs.docker.com/installation/ubuntulinux/ 参考文档 http://docs.docker.com/mac/started/ pc@pc-Th

redis集群环境的搭建和错误分析

redis集群环境的搭建和错误分析 redis集群时,出现的几个异常问题

hadoop2.8 ha 集群搭建

简介: 最近在看hadoop的一些知识,下面搭建一个ha (高可用)的hadoop完整分布式集群: 搭建步骤: 1>  关闭防火墙,禁止设置开机启动: (1) //临时关闭 systemctl stop firewalld (2) //禁止开机启动 systemctl disable firewalld   注意:centos7防火墙默认是:firewalld centos6 的命令是: //临时关闭 service iptables stop //禁止开机启动 chkconfig iptabl

Hadoop2.0分布式集群的平台搭建

一.Hadoop集群安装前的准备基础环境 四台Centos6.5 IP地址: 192.168.174.128 192.168.174.129 192.168.174.130 192.168.174.131 四台主机新建hadoop用户并实现ssh免密登陆 iptables关闭和selinux为disabled 1.修改主机名和ip地址映射为了后面操作方便,修改主机名分别为hadoop01.hadoop02.hadoop03.hadoop04.修改主机名只需修改/etc/sysconfig/net

Linux下Hadoop集群环境的搭建

本文旨在提供最基本的,可以用于在生产环境进行Hadoop.HDFS分布式环境的搭建,对自己是个总结和整理,也能方便新人学习使用. 基础环境 JDK的安装与配置 现在直接到Oracle官网(http://www.oracle.com/)寻找JDK7的安装包不太容易,因为现在官方推荐JDK8.找了半天才找到JDK下载列表页的地址(http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html).因

Linux下Redis集群环境的搭建

一.安装redis(使用redis3.0版本) 1.需要gcc环境,如果没有执行命令安装gcc yum install gcc-c++ 2.下载redis3.0的源码包并上传至服务器 3.解压源码包 tar -zxvf redis-3.0.0.tar.gz 4.进入解压目录编译 make 5.安装redis make install PREFIX=/usr/local/redis 二.启动redis 1.从redis-3.0.0文件中复制redis-conf到redis的安装目录中 2.然后修改

【zookeeper】zookeeper单机和集群环境的搭建

首先去官网下载zookeeper安装包,本文采用3.4.6stable版本 http://zookeeper.apache.org/doc/r3.4.6/ tar命令解压后的目录结构如下: [[email protected] zookeeper-3.4.6]# ll total 1612 drwxr-xr-x 2 1000 1000 4096 Feb 20 2014 bin -rw-rw-r-- 1 1000 1000 82446 Feb 20 2014 build.xml -rw-rw-r-

【Kafka】kafka的环境搭建,集群环境的搭建

Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自己独特的设计 Kafka将消息以topic为单位进行归纳. 将向Kafka topic发布消息的程序成为producers. 将预订topics并消费消息的程序成为consumer. Kafka以集群的方式运行,可以由一个或多个服务组成,每个服务叫做一个broker. 下面来看下如何简单的使用: 首先,去官网下载kakfa的安装包 http://kafka.apache.org/downloads.html