CDH5.14部署手册
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CDH大数据集群部署手册
cdh5.14版本
目录
一、概述 (3)
二、集群部署准备 (3)
1.集群硬件信息 (3)
2.集群服务部署规划 (4)
3.管理节点到其他节点免密钥配置 (5)
4.系统优化 (5)
5.时钟同步 (6)
6.CDH本地yum源搭建 (9)
7.MySQL主从安装配置 (9)
8.创建集群各服务的数据库 (13)
三、应用部署 (13)
1.cloudera manager server安装 (13)
2.cloudera management service安装 (18)
3.hdfs安装 (19)
4.zookeeper安装 (20)
5.yarn安装 (20)
6.hive安装 (21)
7.spark安装 (21)
8.hbase安装 (22)
9.impala安装 (23)
10.oozie安装 (24)
11.sqoop安装 (25)
12.sqoop2安装 (25)
13.kafka安装 (25)
14.kudu安装 (26)
15.hue安装 (27)
16.hdfs高可用 (28)
17.yarn高可用 (30)
18.hiveserver2负载均衡 (30)
19.impalad负载均衡 (33)
20.hue 配置负载均衡的hiveserver2和impala (35)
四、安全部署 (35)
1.Kerberos高可用安装 (35)
2.集群enable Kerberos (41)
3.sentry安装 (43)
4.OpenLDAP安装 (46)
5.Linux系统集成OpenLDAP (51)
6.hue集成ldap用户同步 (54)
7.hive集成LDAP认证 (57)
8.impala集成LDAP认证 (57)
9.LDAP图形客户端Apache Directory Studio (58)
五、集群参数调优 (63)
六、总结 (66)
一、概述
针对海尔大数据应用的需求,本文完成了CDH5.12大数据集群的部署,并记录了详细步骤。
二、集群部署准备
1.集群硬件信息
1.1集群各主机IP与主机名映射表
1.2主机qdcdh00-01内存情况:
主机qdcdh02-09内存情况:
1.3主机逻辑cpu个数:
主机物理cpu个数:
主机单个cpu核心数:
主机单个cpu core线程数:
主机qdcdh00-01的cpu信息:
主机qdcdh02-09的cpu信息:
1.4主机硬盘分区情况查看命令:
主机qdcdh00-04硬盘分区情况:
主机qdcdh05-09硬盘分区情况:
2.集群服务部署规划
2.1集群各主机角色分为四类:边缘节点一台(qdcdh00)、管理节点一台(qdcdh01)、
主节点三台(qdcdh02-04)和数据节点五台(qdcdh05-09);
2.2各服务在集群主机上的分配:
3.管理节点到其他节点免密钥配置
3.1配置qdcdh01到其他主机的免密钥登录:
4.系统优化
4.1调整swap分区的使用:
4.2关闭透明大页:
将这两句添加到/etc/rc.local中。
5.时钟同步
5.1设置qdcdh01为ntp server,修改/etc/ntp.conf文件,将红色部分内容注释,
添加蓝色内容:
5.2启动qdcdh01上的ntpd服务,并设置开机启动:
5.3在集群的其他主机上,修改/etc/ntp.conf文件,修改server配置字段内容问
qdcdh01主机,注释红色部分,添加蓝色部分:
5.4如5.2操作,重启各主机的ntpd服务,并添加开机启动。
6.CDH本地yum源搭建
6.1在qdcdh01主机上安装httpd服务,并将本次安装的cdh5.12相关安装文件放
到/var/www/html下:
6.2在集群的各主机/etc/yum.repos.d下添加自建的cdh_5.12.repo文件:
6.3检查yum源中是否存在cdh5.12的相关包:
7.MySQL主从安装配置
7.1在qdcdh01和qdcdh00上安装MySQL,其中qdcdh01为master,qdcdh00为
slave;
7.2卸载系统中原先安装的mysql-libs:
7.3在qdcdh01上安装MySQL server:
7.4初始化MySQL数据库:
7.5创建MySQL日志目录:
7.6修改配置文件/etc/f:
7.7启动MySQL服务,并设置开机启动:
7.8通过mysql_secure_installation命令设置mysql,需要输入的mysql初始化
密码位于/var/log/mysqld.log中:
设置mysql密码为‘Pass_haier’,并设置不允许root用户远程登录,然后用新密码登录测试:
7.9将mysql-connector-java.jar放到Java共享目录下:
7.10以上步骤同样在qdcdh00上操作一遍;
7.11在qdcdh00和qdcdh01两台机器上同步执行如下命令:
7.12在master(qdcdh01)上设置用来同步数据的用户rep、slave的host(qdcdh00)
及密码’rep mysql’:
此时master上不要做任何操作;
7.13在slave(qdcdh00)上设置进行设置master的主机名,master的同步用户名
及同步用户密码,以及在master上执行的SHOW MASTER STATUS的属性:
7.14在master MySQL上进行测试:
7.15在slave mysql上查看数据库是否同步过去,同步则MySQL主从配置完成。
8.创建集群各服务的数据库
三、应用部署
1.cloudera manager server安装
1.1在cloudera manager server(qdcdh01)主机上安装jdk:
1.2在qdcdh01上安装cloudera manager server服务:
1.3设置cloudera manager server数据库,即上面MySQL创建的scm数据库:
1.4启动cloudera manager server服务:
1.5在浏览器中访问qdcdh01:7180,即可进入cm管理的url,初始创建admin用户,
密码为’admin’;
1.6同意服务条款:
由于license还没有到手,选择企业免费60天试用版:
在指定主机里填写qdcdh0[0-9]来添加主机到cloudera manager中:
1.7设置集群安装parcel URL为本地http服务提供的parcel路径:
1.8选择安装的cdh版本、kafka版本和kudu版本,并填写cloudera manager
agent的自定义存储库路径为本地http服务提供的URL:
1.9安装Java SE及Java无限制强度机密策略文件:
不启用单用户模式:
1.10前面已经完成了qdcdh01到集群各主机的免密钥登录,此处填写qdcdh01的
root密码:
1.11继续完成cloudera manager部分安装:
然后分发parcel:
最后主机检查,没有警告信息则完成安装:
2.cloudera management service安装
2.1添加cloudera management service服务:
2.2填写上面MySQL为cloudera management service创建的数据库名称、用户和
密码:
2.3继续完成cloudera management service的安装:
3.hdfs安装
3.1选择添加hdfs服务,并选择各角色所在主机:
3.2设置datanode和namenode的数据存储目录:
3.3完成hdfs服务安装:
4.zookeeper安装
4.1选择zookeeper server主机为qdcdh02-04:
4.2配置zookeeper服务:
5.yarn安装
5.1添加yarn服务,并选择各yarn角色服务所在主机:
5.2配置yarn数据目录:
5.3完成服务添加:
6.hive安装
6.1选择hive角色分配:
6.2填写MySQL数据库中为hive元数据创建数据库metastore及用户名和密码:
6.3设置hive仓库目录:
7.spark安装
7.1添加spark服务,选择一组spark服务依赖关系:
7.2进行角色分配:
7.3设置spark on yarn:
7.4需要添加spark gateway:
7.5完成服务添加;
8.hbase安装
8.1hbase角色分配:
8.2配置hbase服务在hdfs上的根目录:
9.impala安装
9.1impala角色分配:
9.2设置impala daemon暂存目录:
9.3完成服务添加
10.oozie安装
10.1选择oozie服务的一组依赖关系:
10.2选择oozie server的安装主机:
10.3设置oozie的数据库名称,用户名及密码,同样在上面MySQL中创建:
10.4设置oozie在hdfs上的工作目录:
11.sqoop安装
在qdcdh00-05上安装sqoop1 client gateway即可;
12.sqoop2安装
12.1选择sqoop2 server的安装主机:
12.2 sqoop2服务配置:
13.kafka安装
13.1添加kafka服务,选择kafka依赖的服务:
13.2选择kafka角色:
13.3配置kafka数据存储目录
13.4继续即可完成安装,完成后修改如下配置:
13.5使能kerberos和sentry
13.6重启kafka服务完成服务添加和配置。
14.kudu安装
14.1 分配kudu服务各角色:
14.2 设置kudu相关数据存储目录:
14.3 完成kudu服务添加:
15.hue安装
15.1 为hue服务选择一组依赖关系:
15.2 定义hue的角色分配:
15.3 填写hue在MySQL中的数据库名称、用户名和密码:
16.hdfs高可用
16.1 在hdfs服务中,选择【操作】 【启用High Availability】:
16.2 填写nameservice名称:
16.3 选择另一个namenode的主机名称和journalnode主机:
16.4 配置namenode的数据目录和journalnode的数据目录:
16.5 为hive服务更新hdfs namenode的配置信息:
16.6 为hue更改hdfs 高可用配置:
添加HttpFS角色:
更改hue配置中的HDFS Web界面角色,并重启hue服务:
17.yarn高可用
17.1 在yarn服务中选择【操作】 【启用High Availability】:
17.2 选择另一个yarn resource manager node主机:
17.3 重启相关依赖服务;
18.hiveserver2负载均衡
18.1 在qdcdh00主机上安装Haproxy:
18.2 将/etc/haproxy目录下的haproxy.cfg文件备份,新建haproxy.cfg文件,
添加如下配置,关键信息为蓝色字体内容:
18.3 重启haproxy服务,并添加开机启动:
18.4 在cloudera manager中配置hiveserver2 load balancer:
配置完成后,重新生成hive的keytab文件:
然后重启hive服务;
18.5连接测试:
说明:由于cloudera manager中配置了hiveserver2 load balancer为:30010,在使用jdbc连接hiveserver2时,无论访问原先的hiveserver2:10000还是访问负载均衡后的qdcdh00:30010,kerberos的principal一律使用hive/***************************,即如下格式:
19.impalad负载均衡
19.1 在 /etc/haproxy/haproxy.cfg配置文件中追加如下:
19.2 重启haproxy,在cloudera manager中配置impala的load balancer:
配置完后,需要重新生成impala服务的keytab文件:
然后重启impala服务;
19.3测试:
jdbc测试:
impala-shell测试:
说明:同上面hiveserver2的负载均衡,在cm中配置了impala的load balancer 后,所有impalad的jdbc访问需要的principal也一律为impala/***************************,即如下:
20.hue 配置负载均衡的hiveserver2和impala
在hue的配置中搜索ini,找到“hue_safety_valve_server.ini 的 Hue Server 高级配置代码段(安全阀)”这个配置项,填写beeswax和impala
两部分配置:
重启hue服务即可。
四、安全部署
1.Kerberos高可用安装
1.1在qdcdh01上安装kerberos软件:
1.2编辑/var/kerberos/krb5kdc/kdc.conf,这是kerberos服务器端的配置,修
改配置中的realm名称,参照蓝色修改部分:
1.3修改/var/kerberos/krb5kdc/kadm5.acl文件,添加作为管理员的principal
类型,此处以*/admin格式的用户为管理员:
1.4编辑/etc/krb5.conf,这是客户端的配置文件,需要同步到每个主机上,修改其
中的realm以及对应的kdc、admin_server部分(蓝色标注部分):
1.5初始化kerberos数据库,密码为’admin’:
1.6启动kdc和kadmin进程,并设置开机启动:
1.7在qdcdh01主机上使用kadmin.local命令创建admin/admin账户为管理员账
户,密码为’haier’:
使用kinit来测试:
自此,主kdc安装完成,接下来安装备kdc:
在qdcdh00主机上安装kerberos服务:
注意:此处只安装服务,暂不做相应配置及启动服务。
1.8在主KDC节点:修改/etc/krb5.conf,添加备节点kdc(蓝色部分);
1.9在主KDC节点上,重启krb5kdc和kadmin 服务;
1.10在主KDC上创建主从同步账号,并为账号生成keytab文件:
keytab文件默认生成在/etc/krb5.keytab下;
1.11 将主KDC /etc/目录下的krb5.conf和krb5.keytab文件复制到从KDC主机
的/etc目录下,将主KDC的/var/Kerberos/krb5kdc目录下的 、kadm5.acl、kdc.conf复制到从KDC主机的/var/Kerberos/krb5kdc目录下:
1.12 从KDC节点上,创建/var/kerberos/krb5kdc/kpropd.acl配置文件,添加用
来同步的principal:
1.13 在从KDC节点上,启动kprop服务并加入系统自启动:
从KDC上已经准备好了数据传输,接下来在主KDC上使用kdb5_util将kerberos数据库导出,然后通过kprop命令想从KDC同步数据;
1.14 在主KDC节点上使用kdb5_util命令导出kerberos数据库:
导出成功后生成master.dump和master.dump.dump_ok两个文件:
1.15 在主KDC上使用kprop命令将master.dump文件同步至从KDC节点:
1.16 在从KDC节点的/var/kerberos/krb5kdc目录下查看:
目录下增加了上图中红色标识的文件。
1.17 在从KDC节点上测试是否同步过来了主KDC上的数据:
在从KDC节点上将kprop服务停止,将kpropd.acl文件备份并删除,然后启动krb5kdc和kadmin服务:
1.18 测试成功,在从KDC节点上,将kadmin、krb5kdc服务停止,将/etc/krb5.conf
还原为原先配置,将备份的kprop.acl还原回来,启动kprop服务。
1.19 在主KDC节点的/var/kerberos/krb5kdc目录下编写同步脚本kprop_sync.sh:
1.20 在主KDC上通过crontab定时任务执行同步脚本:
1.21 在集群的其他节点上安装kerberos客户端,并将主KDC /etc/krb5.conf分
发到集群的各个主机上:
2.集群enable Kerberos
2.1 在qdcdh01上为cloudera manager创建kerberos管理员账户,密码为’haier’:
2.2 在cloudera manager管理界面中,选择【管理】 【安全】:
选择启用kerberos:
2.3 检查是否满足这四个条件,满足则继续下一步;
2.4 填写主KDC相关信息:
2.5 选择不通过cloudera manager管理krb5.conf文件:
2.6 填写为cloudera manager创建的kerberos管理员账户:
2.7 配置hdfs安全的访问端口:
2.8 继续便完成集群kerberos的使能;
2.9 kerberos安装完成后,hdfs便不能再以sudo -u hdfs来获取hdfs超级用户的权限,而是需要kinit hdfs的principal,默认hdfs的超级用户为hdfs,超级组为supergroup,根据官方建议需要修改hdfs超级用户为新用户(本集群为hdfsadmin):首先创建hdfsadmin系统用户:
然后为这个用户创建principal:
在cm中的hdfs配置中将如下配置改为hdfsadmin这个用户,重启hdfs服务:
此后,只需要kinit hdfsadmin这个用户即可获得hdfs的超级用户权限,因此此用户principal密码或者keytab需要严密保管。
同样,对于hive也可以添加超级用户,即在配置中添加如下:
3.sentry安装
3.1 设置hive hdfs目录权限:
3.2 disable impersonation for hiveserver2:
hive-->配置-->[范围]hiveserver2-->[类别]main-->取消勾选;
3.3 阻止用户通过 Hive CLI 直接访问 hive metastore:
hive 配置--> hadoop.proxyuser.hive.groups-->添加用户: hive、hue、sqoop(如果有sqoop服务的话);
由于sqoop job在创建hive表等操作时需要用到hive cli的功能,此处又限制了使用hive cli的组,所以要想使用sqoop提交hive的job,需要提交sqoop job的用户的组属于hive、hue或者sqoop;
3.4 对sentry的角色分配:
3.5 填写前面为sentry创建的数据库信息:
3.6 完成服务添加:
3.7 修改相关服务的sentry相关配置:
在hive配置中设置hive对sentry的支持:
在impala配置中设置impala对sentry的支持:
在hue配置中设置hue对sentry的支持:
3.8 HDFS ACL与sentry权限的同步:
4.OpenLDAP安装
4.1 在qdcdh01主机上安装openLDAP服务,并备份配置文件:
4.2 设置OpenLDAP服务器密码,通过slappasswd命令生成密码的哈希值,以避免密码在配置文件中以明文显示:
4.3 编辑/etc/openldap/slapd.conf文件,修改蓝色字体标注部分:。