Hadoop2.2.0-HA高可用集群环境搭建

原创
2015/09/15 11:07
阅读数 564

Hadoop2.2.0-HA高可用集群环境搭建

  1. 集群主机信息

主机名称

主机ip

配置

主要功能

master1


硬盘300G,内存32GCPU8

管理主节点

master2


硬盘300G,内存32GCPU8

管理备份节点

slave1


硬盘300G,内存8GCPU4

数据节点

slave2


硬盘300G,内存8GCPU4

数据节点

slave3


硬盘300G,内存8GCPU4

数据节点

slave4


硬盘500G,内存4GCPU2

mysql数据库

 

本次集群使用6台物理机,操作系统都采用centOS6.4版本

  1. hadoop-2.2.0.tar.gz

  2. apache-hive-1.0.1-bin.tar.gz

  3. sqoop-1.4.4.bin__hadoop-0.20.tar.gz

  4. zookeeper-3.4.6.tar.gz

  5. jdk1.7

 

  1. 集群组件包

  2. 集群机器配置

  3. 设置静态IP

vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0 #描述网卡对应的设备别名,例如ifcfg-eth0的文件中它为eth0
BOOTPROTO=static #
设置网卡获得ip地址的方式,可能的选项为staticdhcpbootp,分别对应静态指定的 ip地址,通过dhcp协议获得的ip地址,通过bootp协议获得的ip地址
BROADCAST=192.168.0.255 #
对应的子网广播地址
HWADDR=00:07:E9:05:E8:B4 #
对应的网卡物。

 

  1. 修改主机名

vi /etc/sysconfig/network 

hostname=master1

重启一下网络service network restart

验证reboot -h now 立刻重启  然后hostname

  1. 关闭防火墙

关闭已经启动的防火墙: service iptables stop (只能关闭当前)

验证:service iptables status

Firewall is not running

关闭防火墙开机自动启动功能:

1先查看查看: chkconfig --list |grep iptables
iptables        0:off   1:off   2:on    3:on    4:on    5:on    6:off

2关闭 chkconfig  iptables off

验证:chkconfig --list |grep iptables

  1. 配置SSH免密码登录

ssh-keygen 生产密码    回车按三下

赋给其他机器的秘钥:ssh-copy-id+ip(例如:ssh-copy-id 10.1.1.1)

六台机器每台机器都要把当前机器的秘钥发送到其他五台机器上,实现五台机器免秘钥登录。

  1. 安装JDK

把机器自带的jdk删掉:显示机器安装过的jdk命令rpm -qa | grep jdk

卸载命令:

rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.62.1.11.11.90.el6_4.x86_64 
# rpm -e --nodeps java-1.7.0-openjdk-1.7.0.25-2.3.10.4.el6_4.x86_64 
# rpm -e --nodeps tzdata-java-2013c-2.el6.noarch 

  1. 配置zookeeper

  2. tar -zxvf zookeeper-3.4.6.tar.gz   解压zookeeper

  3. cd  zookeeper安装路径的conf目录修改文件zoo_sample.cfg zoo.cfg 

  4. 修改配置文件vi  zoo.cfg

  1. /usr/local/zookeeoer 目录下建立 datalogs目录(注意:在以后拷贝到其它机器上在其它机器上也得建立这二个目录)

  2. server.1data目录下编写一个叫 myid的文件命令为:vi myid  里面写上1

server.2data目录下编写一个叫 myid的文件命令为:vi myid  里面写上2

server.3data目录下编写一个叫 myid的文件命令为:vi myid  里面写上3

server.4data目录下编写一个叫 myid的文件命令为:vi myid  里面写上4

server.5data目录下编写一个叫 myid的文件命令为:vi myid  里面写上5

  1. 将配置好的zookeeper拷贝到其它四台机器上(:修改每台机器上的myid)

scp -r /usr/local/zookeeper IP:/usr/local/

  1. 进入zookeeperbin目录启动zkServer.sh start 启动之后  输入命令:jps 查看控制台是否有QuorumPeerMain进程存在。成功后启动另外四台机器

  2. 测试zookeeper是否有报错现象进入zookeeperbin目录输入zkCli.sh 看下是否报错现象.如果正常进行下一步安装.

  3. 配置hadoop

解压hadoop-2.2.0.tar.gz 进入hadoop解压的etc/hadoop/目录编辑六个文件分别是:core-site.xml, hadoop-env.sh, hdfs-site.xml , mapred-site.xml, yarn-site.xml, slaves

  1. 首先修改core-site.xml 配置如下:

配置解释:

fs.defaultFs:指定hdfsnameservicens1,NameNodeURIhdfs://主机名:端口

hadoop.tmp.dir:这里的路径默认是NameNodeDataNodeJournalNode等存放数据的公共目录。用户也可以自己单独指定这三类节点的目录

ha.zookeeper.quorum:这里是ZooKeeper集群的地址和端口。注意,数量一定是奇数,且不少于三个节点。

配置hadoop-env.sh (只需要指定jdk的安装路径即可)

 

  1. 配置hdfs-site.xml   

    配置解释:

    dfs.namenode.name.dir 

    指定namenode名称空间的存储地址。

    dfs.namenode.data.dir

    指定datanode数据存储地址

    dfs.replication

    指定数据冗余份数。

    dfs.nameservices

    指定hdfsnameservicecluster1,需要和core-site.xml中的保持一致。

    dfs.ha.namenodes.cluster1

    cluster1下面有两个NameNode,分别是master1master2.

    dfs.namenode.rpc-address.cluster1.master1:

    maste1RPC通信地址.

    dfs.namenode.http-address.cluster1.master1:

    master1http通信地址

    dfs.namenode.rpc-address.cluster1.master2:

    maste1RPC通信地址

    dfs.namenode.http-address.cluster1.master2:

     master1http通信地址

    dfs.namenode.shared.edits.dir:

    指定NameNode的元数据在JournalNode上的存放位置

    dfs.ha.automatic-failover.enabled.cluster1:

    指定支持高可用自动切换机制

    dfs.client.failover.proxy.provider.cluster1:

     配置失败自动切换实现方式

    dfs.journalnode.edits.dir: 

    指定Journalnode的元数据在JournalNode上的存放位置

    dfs.ha.fencing.methods: 

    配置隔离机制

    dfs.ha.fencing.ssh.private-key-files:

    使用隔离机制时需要ssh免密码登陆

    ha.failover-controller.cli-check.rpc-timeout.ms:

    手动运行的FC功能(从CLI)等待健康检查、服务状态的超时时间。

    ipc.client.connect.timeout:

    SSH连接超时,毫秒,仅适用于内建的sshfence fencer

    dfs.image.transfer.bandwidthPerSec:

     Image文件传输时可以使用的最大带宽,秒字节。0表示没有限制。HA方式使用不到,可不关注

    dfs.web.ugi:

    Web服务器使用的用户名。如果将这个参数设置为超级用户的名称,则所有Web客户就可以看到所有的信息

    4.配置mapred-site.xml 

     

    配置解释:

    mapreduce.framework.name:mapreduce:

    建立在指定yarn之上

    mapred.local.dir

    MR 的中介数据文件存放目录

    mapreduce.jobhistory.address 

    配置 MapReduce JobHistory Server 地址,默认端口10020 

    mapreduce.jobhistory.webapp.address

     配置 MapReduce JobHistory Server web ui 地址,默认端口19888 

    5.配置yarn-site.xml

    配置解释:

    yarn.resourcemanager.hostname:

    开启故障自动切换至master

    yarn.resourcemanager.address:

    ResourceManager 对客户端暴露的地址。客户端通过该地址向RM提交应用程序,杀死应用程序等

    yarn.resourcemanager.scheduler.address:

     ResourceManager ApplicationMaster暴露的访问地址。ApplicationMaster通过该地址向RM申请资源、释放资源等。

    yarn.resourcemanager.webapp.address:

     ResourceManager对外web ui地址。用户可通过该地址在浏览器中查看集群各类信息。

    yarn.resourcemanager.resource-tracker.address :

    ResourceManager NodeManager暴露的地址.NodeManager通过该地址向RM汇报心跳,领取任务等

    yarn.nodemanager.aux-services:

    NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序

    配置slaves

    7.启动hadoop集群

     

    1.    首先五台机器启动zookeeper  zkServer.sh startjournalnode master1,master2,slave1,slave2,slave3 sbin目录中 hadoop-daemon.sh start journalnode

    2.格式化zookeepermaster1上即可命令: hdfs zkfc -formatZK
    3.对master1主节点进行HDFS格式化bin/hadoop namenode –format,看是否报错。。如果没有报错进行下一步,启动主节点的namenode命令是:sbin/hadoop-daemon.sh start namenode.
    4.对master2主节点进行HDFS格式化bin/hadoop namenode -bootstrapStandby,看是否报错。。如果没有报错进行下一步,启动主节点的namenode命令是:sbin/hadoop-daemon.sh start namenode
    5.在master1master2启动zkfc

    sbin/hadoop-daemon.sh start zkfc    

    我们的master1master2有一个节点就会变为active状态.

    6.启动datanode :在master1上执行sbin/hadoop-daemon.sh start datanode
    7.启动yarn master1,master2sbin/start-yarn.sh
    8.检查是否启动成功在控制台上jps 看下进程是否正确主节点

    备用节点进程显示如下:

    在访问50070端口8088端口是否能够访问,正常的话hadoop集群算是成功了.

8.配置hive

 

  1. 配置hive

  2. 解压hive包进入hive目录的conf下面修改hive-default.xml.template, hive-env.sh.template hvie-site.xmlhive-env.sh

  3. 编辑hive-site.xml(最好是自己vi一个hive-site.xml因为默认配置文件里面的配置都是系统配置的)

 

配置解释:

hive.metastore.warehouse.dir:

HDFS上的)数据目录默认值是/user/hive/warehouse

hive.exec.scratchdir:

HDFS上的)临时文件目录,默认值是/tmp/hive-${user.name}

hive.querylog.location:

 Hive 实时查询日志所在的目录,如果该值为空,将不创建实时的查询日志。 

javax.jdo.option.ConnectionURL:

 元数据库的连接 URL   

javax.jdo.option.ConnectionDriverName:

JDBC驱动

javax.jdo.option.ConnectionUserName:

用户名

javax.jdo.option.ConnectionPassword:

密码

hive.metastore.authorization.storage.checks:

属性被设置成true,Hive将会阻止没有权限的用户进行表删除操作

 

3.编辑hive-env.sh (指定hadoop安装目录)

4.加载mysql驱动到hivelib目录中

5.10.1.3.125上安装mysql数据库建立database hive的数据库设置alter database hive character set latin1; 改变hive元数据库的字符集.当前连接的用户远程连接权限.

6.启动hive 进入hive安装bin目录./hive 启动如果不报错的话进去

 

展开阅读全文
打赏
0
10 收藏
分享
加载中
更多评论
打赏
0 评论
10 收藏
0
分享
返回顶部
顶部