D11 HA集群搭建,以及Hive基础

来源:互联网 发布:软件测试工作怎么样 编辑:程序博客网 时间:2024/05/22 05:06
一、扩展原来的集群:
克隆机器后,主要完成修改主机名;修改ip地址;修改hosts映射关系;关闭服务器;ssh免密登陆;由于是克隆所以简单软件安装和配置环境变量都不用做。
只需要,修改:主机名,IP地址,hosts关系,ssh免密登陆
主机名:hostnamectl set-hostname minix;  后可用hostname命令查看
IP地址:vi /etc/sysconfig/network-scripts/ifcfg-ens33   ;  后面的是网卡名
hosts:修改的是所有机器互联互通;
ssh:host、mini1-->others;mini2-->mini3,4,5,6   ;

启动HA集群:

①启动zookeeper集群(分别在mini5、mini6、mini7上启动zk)
cd /hadoop/zookeeper-3.4.5/bin/./zkServer.sh start
#查看状态:一个leader,两个follower
./zkServer.sh status
②启动journalnode(分别在在mini5、mini6、mini7上执行)
cd /hadoop/hadoop-2.6.4
sbin/hadoop-daemon.sh start journalnode
#运行jps命令检验,hadoop05、hadoop06、hadoop07上多了JournalNode进程
③格式化HDFS
#在mini1上执行命令:
hdfs namenode -format
#格式化后会在根据core-site.xml中的hadoop.tmp.dir配置生成个文件,这里我配置的是/hadoop/hadoop-2.6.4/tmp,然后将/hadoop/hadoop-2.6.4/tmp拷贝到hadoop02的/hadoop/hadoop-2.6.4/下。
scp -r tmp/ hadoop02:/home/hadoop/app/hadoop-2.6.4/
##也可以这样,建议hdfs namenode -bootstrapStandby

④格式化ZKFC(在mini1上执行一次即可)
hdfs zkfc -formatZK
⑤启动HDFS(在mini1上执行)
sbin/start-dfs.sh

⑥启动YARN(#####注意#####:是在hadoop02上执行start-yarn.sh,把namenode和resourcemanager分开是因为性能问题,因为他们都要占用大量资源,所以把他们分开了,他们分开了就要分别在不同的机器上启动)
sbin/start-yarn.sh

到此,hadoop-2.6.4配置完毕,可以统计浏览器访问:
http://hadoop00:50070
NameNode 'hadoop01:9000' (active)
http://hadoop01:50070
NameNode 'hadoop02:9000' (standby)


二、hosts配置信息

hosts配置上,每台机器都要加上,localhost等都不要动。!!!
192.168.137.19  host
192.168.137.20  mini1
192.168.137.21  mini2
192.168.137.22  mini3
192.168.137.23  mini4
192.168.137.24  mini5
192.168.137.25  mini6


三、
打开HA集群办法:!!!!特别重要!

A首先,在三台datanode上开启(  mini4,   5,   6  )zookeeper
① ./zkServer.sh start      开启
② ./zkServer.sh status    查看状态
③ hadoop-daemon.sh start journalnode   开启journalnode
B其次,在host上启动namenode
①start-dfs.sh  启动hdfs
C再次,在mini2上启动yarn
①start-yarn.sh 启动yarn
D最后,在mini3上启动resourcemanager
①yarn-daemon.sh start resourcemanager

       主机名 IP 安装的软件    运行的进程
host         192.168.33.129       jdk、hadoop NameNode、DFSZKFailoverController(zkfc)
mini1 192.168.33.130       jdk、hadoop NameNode、DFSZKFailoverController(zkfc)
mini2 192.168.33.131       jdk、hadoop ResourceManager 
mini3 192.168.33.132       jdk、hadoop ResourceManager
mini4 192.168.33.133       jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain
mini5 192.168.33.134       jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain
mini6 192.168.33.135       jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain


四、HA机制


前言:正式引入HA机制是从hadoop2.0开始,之前的版本中没有HA机制

1.1 HA的运作机制

1)hadoop-HA集群运作机制介绍

所谓HA,即高可用(7*24小时不中断服务)

实现高可用最关键的是消除单点故障

hadoop-ha严格来说应该分成各个组件的HA机制——HDFS的HA、YARN的HA

 

2)HDFS的HA机制详解

通过双namenode消除单点故障

namenode协调工作的要点:

A、元数据管理方式需要改变:

内存中各自保存一份元数据

Edits日志只能有一份,只有Active状态的namenode节点可以做写操作

两个namenode都可以读取edits

共享的edits放在一个共享存储中管理(qjournal和NFS两个主流实现)

B、需要一个状态管理功能模块

实现了一个zkfailover,常驻在每一个namenode所在的节点

每一个zkfailover负责监控自己所在namenode节点,利用zk进行状态标识

当需要进行状态切换时,由zkfailover来负责切换

切换时需要防止brain split现象的发生

 

1.2 HDFS-HA图解

 

  集群节点规划

集群部署节点角色的规划(10节点):

server01   namenode   zkfc    > start-dfs.sh

server02   namenode   zkfc

 

server03   resourcemanager    > start-yarn.sh

server04   resourcemanager

 

server05   datanode   nodemanager     

server06   datanode   nodemanager     

server07   datanode   nodemanager     

 

server08   journal node    zookeeper

server09   journal node    zookeeper

server10   journal node    zookeeper


五、安装Hive和多客户端登陆
①配置hive
(a)配置HIVE_HOME环境变量  vi conf/hive-env.sh 配置其中的$hadoop_home
(b)配置元数据库信息   vi  hive-site.xml 
添加如下内容:
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>

<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>

<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>username to use against metastore database</description>
</property>

<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
<description>password to use against metastore database</description>
</property>
</configuration>
②安装hive和mysq完成后,将mysql的连接jar包拷贝到$HIVE_HOME/lib目录下
如果出现没有权限的问题,在mysql授权(在安装mysql的机器上执行)
mysql -uroot -p
#(执行下面的语句  *.*:所有库下的所有表   %:任何IP地址或主机都可以连接)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
FLUSH PRIVILEGES;
③Jline包版本不一致的问题,需要拷贝hive的lib目录中jline.2.12.jar的jar包替换掉hadoop中的 /home/hadoop/app/hadoop-2.6.4/share/hadoop/yarn/lib/jline-0.9.94.jar
最后:启动hive---->bin/hive

六、Hive的多客户端登陆,新建一个连接server的客户端。
①./hiveserver2;
②./beeline;
③输入 !connect jdbc:hive2://localhost:10000;
④输入用户名hadoop ,密码回车即可。