HDB IN ACTION(1)

一、SQL on Hadoop
我们需要知道业界很多产品如hive、Presto、Drill、SparkSQL、Impala等均在发力sql on hadoop,如果谈及这个话题,需要很多的篇幅,
我们这里只需要知道hawq是开源的一款sql on hadop的产品,具体它的优势,请另行查询,熟悉greenplum的用户应该知道mpp数据库的强劲性能
而hawq2.0是将mpp和hadoop结合后的产品。

二、几个概念
1.hawq和hdb
hawq是pivotal公司将产品共性给apache基金会的开源名称
hdb是pivotal公司的sql on hadoop的产品名称,二者内核是一致的,只是一个开源一个商用,当然我个人认为商用版本更完善。

2.hdb和hdp
大家千万不要混淆这两个名称,hdp是HORTONW0RKS DATA PLATFORM的简称,是HORTONW0RKS公司的hadoop产品,与其同名的还有CDH,其是Cloudera公司的hadoop产品。

3.Ambari
Apache Ambari是一种基于Web的工具,支持Apache Hadoop集群的供应、管理和监控。Ambari目前已支持大多数Hadoop组件, 包括HDFS、MapReduce、Hive、Pig、 Hbase、Zookeper、Sqoop和Hcatalog等。
Ambari host对内存和硬盘有一定要求,50hosts以内,内存不小于2GB,硬盘不小于50GB.500hosts以内内存8GB,硬盘200GB,一般都能满足要求。

三、安装选择
1.hadoop版本选择
hawq安装需要hadoop2.5以上,如果低于版本要求,可以安装上,创建库和表都可以但是无法插入数据,我第一次尝试就是在hadoop2.2的开源
版本安装的,安装后能启动,能创建数据库、能建表,但是就是不能插入数据。后面的例子用的版本是hadoop2.6.5的开源版本安装的,具体
hadoop的安装过程,可参照之前的2.2版本安装或者自行查询教程。

2.ambari版本和jdk版本要求
这一点是很多安装教程中没有真正提及的,会误导很多用户,如果你的jdk版本不能修改,那你必须再次基础上进行选择,比如我测试环境的
jdk版本就是1.6.0.45那就不能使用ambari安装。

参看hdb的安装教程:http://hdb.docs.pivotal.io/220/hdb/releasenotes/HAWQ220ReleaseNotes.html
hdb2.2需要ambari2.4.2,但是ambari1.5.1就已经不支持java6了,因此采用jdk6就不能用ambari。

3.centos 6还是7决定你装hawq还是hdb
虽然centos6是可以安装hawq的,但是坑太多了,因为hawq2.0以后尤其2.2是根据最新的系统版本进行测试编译的,用老的6的版本进行编译,需要更新的组件太多,而且相互间的关联会让人混乱,我尝试了几次在centos6.6上的源码安装hawq2.2基本都快到最后几步了,但是还是没成功,推荐对linux组件很熟悉的朋友尝试,一般用户推荐使用商用版本的hdb,你不要觉得hdb安装简单,在安装过程中,自己的知识积累通过排错提升了很多,后面我会放上源码编译hawq的内容。

四、安装环境
采用之前的4台虚拟机安装(c9test91—94),系统版本Centos6.6 内存8GB ,hadoop版本为2.6.5官方release版本。
如果不单独说明,后续的操作均在所有机器上执行

1.hadoop环境介绍

主机 安装软件 进程
c9test91 jdk hadoop zk NameNode、DFSZKFailoverController、JournalNode、QuorumPeerMain
c9test92 jdk hadoop zk NameNode、DFSZKFailoverController、JournalNode、QuorumPeerMain
c9test93 jdk hadoop zk DataNode、NodeManager、JournalNode、QuorumPeerMain 、ResourceManager
c9test94 jdk hadoop DataNode、NodeManager

2.文件描述符

#ulimit -Sn 和ulimit -Hn,如果小于10000,使用下面命令更新所有主机:
ulimit -n 10000 

3.禁用防火墙:

etc/init.d/iptables stop  
chkconfig iptables off 

4.禁用selinux:

vi /etc/selinux/config
SELINUX=disabled

#输入 setenforce 0 让配置生效

5.主机名设置

vi /etc/hosts
    192.168.209.91 c9test91
    192.168.209.91 c9test92
    192.168.209.91 c9test93
    192.168.209.91 c9test94

    #需要注意的是:hostname执行结果要和上面配置的主机名一致,否则修改/etc/sysconfig/network

6.NTP
确保各个主机时间一致,采用crontab更新,更新系统和硬件,注意这里采用的不是安装ntp server的方式而是定时同步

* */2 * * * /usr/sbin/ntpdate asia.pool.ntp.org && /sbin/hwclock --systohc

7.用户各主机的免密码登陆
在安装hadoop的时候,已经设置过了root和hadoop账户的免密码登陆,这里需要增加gpadmin用户

groupadd -g 3030 gpadmin
useradd -u 3030 -g gpadmin -m -s /bin/bash gpadmin 
echo gpadmin | passwd  gpadmin --stdin

su - gpadmin #后面操作在gpadmin用户下操作

#设置免密码登陆:
#(1)生成公钥和私钥,在所有机器执行
ssh-keygen -t rsa -P ''

#(2)以下操作在c9test91上操作
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
ssh gpadmin@c9test92 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
ssh gpadmin@c9test93 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
ssh gpadmin@c9test94 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

scp ~/.ssh/authorized_keys gpadmin@c9test92:~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys gpadmin@c9test93:~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys gpadmin@c9test94:~/.ssh/authorized_keys

#(3)如果个别机器不能生效,可以采用
 ssh-copy-id -i ~/.ssh/id_rsa.pub gpadmin@c9test92 
#此种方法是设置操作机器可以访问对方主机,需要在不同的双向间执行

#(4)注意事项
#权限不对不生效chmod 600 ~/.ssh/authorized_keys所有机器执行

8.主机内存限制
(1)配置主机内存匹配OOM的时候进程被系统kill

vi /etc/sysctl.conf
kernel.threads-max=798720
vm.overcommit_memory=2   #通过此设置,OOM killer进程报告错误,而不是杀死正在运行的进程

sysctl -p 

#附:检查配置命令:sysctl -a | grep overcommit_memory 

(2)vm.overcommit_ratio设定:
2GB-8GB内存:
交换空间=物理RAM
vm.overcommit_ratio=50
8GB和64GB之间内存:
交换空间= 0.5 *物理RAM
vm.overcommit_ratio=50
大于64GB:
交换空间= 4GB
vm.overcommit_ratio=100

  参数修改在/etc/sysctl.conf,修改后用sysctl -p生效
  检查命令:
    sysctl -a | grep overcommit_ratio
cat /proc/meminfo | grep Swap

  用yarn做资源管理器vi yarn-site.xml
  修改yarn.nodemanager.resource.memory-mb


  例子1:大型主机
     内存:256GB  SWAP:4GB
 NON_HAWQ_MEMORY设置:
    2GB给操作系统;
    2GB用于datanode
    2GB用于NodeManager
    1GB用于PXF
    overcommit_ratio_percentage:为1(100)
 则:TOTAL_MEMORY = 256GB * 1 + 4GB = 260GB
 使用yarn进行资源管理,需要设置yarn.nodemanager.resource.memory-mb为
 TOTAL_MEMORY - NON_HAWQ_MEMORY = 260GB - 7GB = 253



 例子2:中型主机
     内存:64GB  SWAP:32GB
 NON_HAWQ_MEMORY设置:
    2GB给操作系统;
    2GB用于datanode
    2GB用于NodeManager
    1GB用于PXF
    overcommit_ratio_percentage:为0.5(50)
 则:TOTAL_MEMORY = 64GB * 0.5 + 32GB = 64GB
 使用yarn进行资源管理,需要设置yarn.nodemanager.resource.memory-mb为
 TOTAL_MEMORY - NON_HAWQ_MEMORY = 64GB - 7GB = 57

  例子3:小型主机,测试用
     内存:8GB  SWAP:8GB
 NON_HAWQ_MEMORY设置:
    2GB给操作系统;
    2GB用于datanode
    2GB用于NodeManager
    1GB用于PXF
    overcommit_ratio_percentage:为0.5(50)
 则:TOTAL_MEMORY = 8GB * 0.5 + 8GB = 12GB
 使用yarn进行资源管理,需要设置yarn.nodemanager.resource.memory-mb为
 TOTAL_MEMORY - NON_HAWQ_MEMORY = 12GB - 7GB = 5

9.网络
生产推荐万兆,多网卡做网卡绑定
pxf插件需要使用tomcat,保留端口8005 8080 8009

10.hawq主机要求
hawq segment必须位于运行HDFS DataNode的主机上
master和standby位于不同主机

11.pxf主机要求
必须在HDFS NameNode 和所有HDFS DataNodes上安装PXF
如果已配置具有高可用性的Hadoop,则PXF也必须安装在所有HDFS节点上,包括所有NameNode服务
如果要使用带有HBase或Hive的PXF,必须先在要安装PXF的每台机器上安装HBase客户端(hbase-client)和/或Hive客户机(hive-client)
5432端口不能被占用

 注意: Ambari服务器节点使用PostgreSQL作为默认元数据库。 Hive Metastore使用MySQL作为默认元数据库

12.依赖包

    yum、rpm、scp、curl、unzip、tar、wget、OpenSSL (v1.01, build 16 or later)、Python 2.6.x、OpenJDK 7/8 64-bit

     yum install httpd 

     httpd -v :2.2.15
     #默认安装完web目录在/var/www/html
     #配置文件在/etc/httpd/conf/httpd.conf

你可能感兴趣的:(hadoop)