CDH5.15搭建四之三(微播易公司搭建手册-组件部分)

4. 安装CDH

4.1. 登录

4.2. 选择CM版本

本文档选择Cloudera Express免费版。

4.3. 指定主机

在搜索主机名和IP地址框输入node[169-172],这里输入的内容支持正则表达式。输入后点【搜索】按钮,出现机器列表:
选择“当前管理的主机“选择项卡,点【继续】。

4.4. 选择CDH版本

这里需要选择制作本地源时的版本。

4.5. 检查主机正确性

确保全部验证通过。

4.6. 选择安装的服务

本文选择的是安装自定义服务。

4.7. 角色分配

这里应该根据实际需求和服务器的硬件参数自己选择

4.8. 数据库设置

指定的数据库名称,要与2.2节创建的数据库(hive,monitor,oozie,hue)保持一致,并输入对应的数据库用户名和密码,为了简便这里用的是root账号名和密码。
这里写图片描述

4.8.1. 测试连接报错:

测试连接,Hue 测试报错:Unable to verify database connection:

原因是缺少Mysql mysql-community-libs-compat 安装包,安装后,问题解决:
//进入安装包所在目标
cd /data/mysql/
rpm -ivh mysql-community-libs-compat-5.7.18-1.el7.x86_64.rpm

4.9. 群集设置

可以根据自己的实际情况更改设置,本文采用默认配置。这些配置也可以在集群安装完成后再更改。

4.10. 开始安装

安装过程没有任何错误,显示安装完成。

4.11. 安装完成

基本安装之后的效果如下:
这里写图片描述
第一次安装完成后,会出现一些配置的警告信息。这些主要是测试集群的内存分配报警所致。

5. 安装其余组件

除了基本的组件,还需要安装:oozie,hive2.x,spark2,pig0.12,impala等

5.1. 安装spark2

主要参考文档:https://www.jianshu.com/p/6acd6419f697
CDH安装的是较新版本的CDH-5.15.0,但是CDH-5.15.0默认支持的还是spark1.6版本。这里需要将spark升级到spark2.x版本,以方便使用spark程序读取kafka0.10.x的数据。根据官网上的介绍可知CDH5.15是支持spark2.x的。这里讲spark2的安装做一个记录。
首先贴出一些官方的网址,有兴趣的可以去看看:Cloudera发布Apache Spark 2概述(可以在这里面找到安装方法和parcel包的仓库,不过待会我会给出地址和安装方法) https://www.cloudera.com/documentation/spark2/latest/topics/spark2_installing.html

5.1.1. 安装准备

选用SPARK2_ON_YARN-2.2.0.cloudera2因为支持5.15版本。
1) CSD包下载
http://archive.cloudera.com/spark2/csd/SPARK2_ON_YARN-2.2.0.cloudera2.jar
上传CSD包到机器的/opt/cloudera/csd目录,注意如果本目录下有其他的jar包,把删掉或者移到其他目录

修改SPARK2_ON_YARN-2.2.0.cloudera2.jar的用户和组
chown cloudera-scm:cloudera-scm SPARK2_ON_YARN-2.2.0.cloudera2.jar

2) Parcel设置
这里要说明一下,原先文档中写的是离线下载,这里进行了优化:改为在线下载,所以将下载对应的parcel改为设置parcel。
首先,进入主机的parcel目录
这里写图片描述
其次,设置parcel,注意版本保持一致
http://archive.cloudera.com/spark2/parcels/2.2.0.cloudera2/
这里写图片描述
注:1、设置parcel包时要设置对应的版本
  2、CSD和parcel包都有cloudera1和cloudera2之分,因此在下载CSD和parcel包时两者版本必须一致。

5.1.2. 安装

然后在CM中下载,分配,激活。
停掉CM和集群,现在将他们停掉。运行命令

主节点运行
/opt/cm-5.15.0/etc/init.d/cloudera-scm-server restart
所有节点运行
/opt/cm-5.15.0/etc/init.d/cloudera-scm-agent restart

把CM和集群启动起来。然后点击集群->操作->添加,看是否多了个spark2的选项。添加组件即可。
这里写图片描述
注意这时候,有些组件例如yarn会显示配置过期,这是因为spark影响了yarn,更新即可。
这里写图片描述

5.1.3. Spark2的参数调试

1) Oozie
主要是oozie4.10所造成的问题,这部分看oozie-spark2调试。
2) 角色
还要本身的参数设置,这里看坑:无用客户端用于配置
在执行spark-shell的时候,hdfs的操作需要操作权限:
Caused by: org.apache.hadoop.ipc.RemoteException: Permission denied: user=root, access=WRITE, inode=”/user”:hdfs:supergroup:drwxr-xr-x
这里的措施是:在所有的spark-env.sh中添加
这里写图片描述
但是问题是:spark只有1个角色,所以处理的措施是:建立角色,虽然没用,但是要有,因为是客户端
这里写图片描述
5.2. Kudu参数调试
Kudu的参数调试主要原因是要使用超过300个列的大表作为数据存档。
在安装完kudu后,进入kudu-UI(http://dev-pg-cdh-scm-81:8051),在Flags下面,查:

-max_num_columns=300
-unlock_unsafe_flags=flase

在kudu的master高级中加入设置参数即可。

-max_num_columns=500
-unlock_unsafe_flags=true

这里写图片描述

5.3. spark2-kudu测试

角色如下:
这里写图片描述
通过代码,测试结果如下:
这里写图片描述
这里写图片描述
结论:kudu正常
5.4. 安装impala
5.4.1. 安装软件
点击更新集群,发现impala可以安装了。安装,然后在kudu,hue,impala中更新互相之间的依赖关系,发现hue中有了impala。
5.4.2. Kudu接口
通过Kudu API或其他集成(如Apache Spark)创建的表不会在Impala中自动显示。要查询它们,您必须先在Impala中创建外部表以将Kudu表映射到Impala数据库中:

CREATE EXTERNAL TABLE my_mapping_ tablekudu20180705
STORED AS KUDU
TBLPROPERTIES (
'kudu.table_name' = ' tablekudu20180705'
);

从Impala在Kudu创建一个新表类似于将现有的Kudu表映射到Impala表,只是您需要自己指定模式和分区信息。使用以下示例作为指导。Impala首先创建表,然后创建映射。

CREATE TABLE first_table_kudu_from_lmpala
(
key STRING,
value STRING,
PRIMARY KEY(key)
)PARTITION BY HASH PARTITIONS 16 STORED AS KUDU

测试如下:
这里写图片描述
5.4.3. hive配置
这里写图片描述
hive.metastore.uris= thrift://192.168.1.190:9083,thrift://192.168.1.191:9083
5.5. 安装pig-0.17
5.5.1. 安装
下载地址:http://mirror.bit.edu.cn/apache/pig/选用合适版本。
这里简要说明一下:
现有环境的兼容最高版本是0.16,目前pig最高版本是0.17
这里写图片描述
这里上传pig17到193节点,然后在其余节点执行如下命令:

其余节点执行:解压远程的文件到本地特定目录下
ssh 192.168.1.193 “cat /data/cdh/pig*.tar.gz” | tar -zxvf - -C /opt
增加环境变量:(文档虽然这么写,但是实际上,是:建立bin17/pig17,软连接到bin/pig)
echo “export PIG_HOME=/opt/pig-0.17.0”>>/etc/profile
echo “export PATH=$PATH:$PIG_HOME/bin17”>>/etc/profile
//增加conf的路径
echo “export PIG_CLASSPATH=/etc/hadoop/conf”>>/etc/profile
//设置 :默认开启tez,日志地址
mkdir /opt/pig-0.17.0/log #设置log路径
echo “tez.lib.uris=/user/oozie/share/lib/lib_20180709204506/pig17”>>/opt/pig-0.17.0/conf/pig.properties
echo “pig.logfile=/opt/pig-0.17.0/log/pig-err.log”>>/opt/pig-0.17.0/conf/pig.properties
echo “exectype=tez”>>/opt/pig-0.17.0/conf/pig.properties
echo “pig.blacklist=”>>/opt/pig-0.17.0/conf/pig.properties
sed -i “s/ exectype=tez/ exectype=mr/” /opt/pig-0.17.0/conf/pig.properties

5.5.2. 运行说明

1) shell:环境变量中放了pig17,默认用配置文件开启了tez。如果是直接pig表示自带的pig12.
2) Hue:默认是pig17(oozie的share库),如果使用其他的请指定(pig,pig12,pig17)
3) Oozie:与hue一致
5.6. 升级hive-2.x-HA
5.6.1. Hive2.x安装
这里上传hive2.3到115节点,然后在其余节点执行如下命令:
其余节点执行:解压远程的文件到本地特定目录下

ssh 192.168.1.115 “cat /data/cdh/apache-hive*.tar.gz” | tar -zxvf - -C /opt
增加环境变量:
echo “export HIVE_HOME=/opt/apache-hive-2.3.3-bin/ “>>/etc/profile
echo “export HADOOP_HOME=/opt/cloudera/parcels/CDH/lib/hadoop”>>/etc/profile
//cdh注释掉echo “export PATH=$PATH:$HIVE_HOME/bin”>>/etc/profile

拷贝mysql的jar包

cp /data/cdh/mysql-connector-java-5.1.43.jar /opt/apache-hive-2.3.3-bin/lib

修改配置

cd /opt/apache-hive-2.3.3-bin/conf
cp hive-default.xml.template hive-site.xml
在hive-site.xml中4622行
hive.execution.engine=mr
自动生成表,去掉版本
hive.metastore.schema.verification=false
datanucleus.schema.autoCreateAll=true
还要设置hive.users.in.admin.role=hive以可以增加role

把hadoop的配置放入conf

ln -s /etc/hadoop/conf/* ./

启动服务,测试

在节点:190,191:
nohup /opt/apache-hive-2.3.3-bin/bin/hive –service metastore &
nohup /opt/apache-hive-2.3.3-bin/bin/hive –service hiveserver2 &

测试
/opt/apache-hive-2.3.3-bin/beeline -u jdbc:hive2://192.168.1.190:10000 #这里有个坑
User: root is not allowed to impersonate anonymous (state=08S01,code=0)(root.host)
查看hdfs:
这里写图片描述

5.6.2. HA问题

参考文章:https://blog.csdn.net/rotkang/article/details/78683626
hive.metastore.uris= thrift://192.168.1.190:9083,thrift://192.168.1.191:9083

5.7. Oozie组件的调配

首先oozie不仅是一个作业流调度,而且包含一个sharelib,所以各方面可能都用到,这里写一个checklist,防止修改时,忘记相应选项,现在checklist如下:

NO.项目修改内容关注项
1Spark,pigX目录Sharelib修改
2tez.lib.uris在/opt/pig-0.17.0/conf/pig.properties中引用包
3tez.lib.urisHue等提交里面的参数修改

5.7.1. Oozie组件的基本设置

1) Emial设置
这里写图片描述

5.7.2. Oozie-spark2调试

1) 环境修改
先sudo -u hdfs hadoop fs -rm -r /user/oozie/share/lib/*
首先oozie先建立sharelib,如果有,先清除再建立共享库
得到路径:/user/oozie/share/lib/ lib_20180709204506/,然后执行以下的操作
删掉原有spark的共享库

sudo -u hdfs hadoop fs -rm /user/oozie/share/lib/lib_20180709204506/spark/*

进入spark2的jars目录

/opt/cloudera/parcels/SPARK2-2.2.0.cloudera2-1.cdh5.12.0.p0.232957/lib/spark2/jars

上传jars到spark

sudo -u hdfs hadoop fs -put ./*.jar /user/oozie/share/lib/lib_20180709204506/spark

进入oozie-spark库

cd /opt/cloudera/parcels/CDH/lib/oozie/oozie-sharelib-yarn/lib/spark/

上传oozie-jars到spark

sudo -u hdfs hadoop fs -put ./oozie*.jar /user/oozie/share/lib/lib_20180709204506/spark

记得最后要保持一致

sudo -u hdfs hadoop fs -chown -R oozie:oozie /user/oozie/share/lib/
sudo -u hdfs hadoop fs -chmod -R 775 /user/oozie/share/lib/lib_20180709204506/spark
注意这只是上传jars,还需要sharelib

添加

oozie admin -oozie http://prd-pg-cdh-node-190:11000/oozie -sharelibupdate

确认

oozie admin -oozie http://prd-pg-cdh-node-190:11000/oozie -shareliblist
这就完成了将oozie-spark内的jars换成spark2的情况了。
这一系列修改其实是用欺骗手段来变相处理组件不兼容问题:让oozie认为是spark,但其实是spark2;让cdh认为是spark2,其实还是spark2。

2) Spark2测试例程
准备测试的例程是oozie+spark2的例子,首先进入oozie-UI:
http://prd-pg-cdh-scm-115:8888/oozie/
这里写图片描述
参数均可以,cool不cool!
这里写图片描述
计算结果如下:
这里写图片描述

5.7.3. Oozie-pig0.17

1) 环境修改
到路径:/user/oozie/share/lib/ lib_20180709204506/,然后执行以下的操作

pig15的共享库

sudo -u hdfs hadoop fs -mkdir /user/oozie/share/lib/lib_20180709204506/pig17

进入pig17的jars目录

/data/pig-0.17.0/lib

上传jars到spark

sudo -u hdfs hadoop fs -put ./* /user/oozie/share/lib/lib_20180709204506/pig17

进入oozie-spark库

/opt/cloudera/parcels/CDH/lib/oozie/oozie-sharelib-yarn/lib/pig

上传oozie-jars到spark

sudo -u hdfs hadoop fs -put ./oozie*.jar /user/oozie/share/lib/lib_20180709204506/pig17

记得最后要保持一致

sudo -u hdfs hadoop fs -chown -R oozie:oozie /user/oozie/share/lib/
sudo -u hdfs hadoop fs -chmod -R 775 /user/oozie/share/lib/lib_20180704141926/pig17

备份

sudo -u hdfs hadoop fs -cp /user/oozie/share/lib/lib_20180709204506/pig /user/oozie/share/lib/lib_20180709204506/pig12
sudo -u hdfs hadoop fs -rm -r /user/oozie/share/lib/lib_20180709204506/pig12
sudo -u hdfs hadoop fs -cp /user/oozie/share/lib/lib_20180709204506/pig17 /user/oozie/share/lib/lib_20180709204506/pig #执行这一步之后,默认的pig是17,所以,参数的最后一项:oozie.action.sharelib.for.pig=pig17可以省略
注意这只是上传jars,还需要sharelib

添加

oozie admin -oozie http:// prd-pg-cdh-node-190:11000/oozie -sharelibupdate

确认

oozie admin -oozie http://prd-pg-cdh-node-190:11000/oozie -shareliblist
这就完成了将oozie-pig内的jars换成pig12的情况了。
这一系列修改其实是用欺骗手段来变相处理组件不兼容问题:让oozie认为是pig12,但其实是pig17;让cdh认为是pig17,其实还是pig17。

2) 测试如下:
总体参数如下:
oozie.action.sharelib.for.pig=pig17
tez.lib.uris= /user/oozie/share/lib/lib_20180709204506/pig17
exectype=tez
这里写图片描述

5.8. Oozie的web界面安装、配置和运行

参考文献:https://blog.csdn.net/jethai/article/details/52345065
在所有的节点

cd /var/lib/oozie
scp 192.168.1.194:/data/cdh/ext-2.2.zip /data/cdh/
unzip /data/cdh/ext-2.2.zip -d /var/lib/oozie/

5.9. Hue组件的调配

注意hue在安装有mysql的节点上面,因为用到了MySQL的最后一个lib的rpm。

5.9.1. 时区

Hue->配置->时区time_zone: Asia/Shanghai

5.9.2. Hue-tez-pig17

这里写图片描述
exectype=tez
tez.lib.uris=/user/oozie/share/lib/lib_20180709204506/pig17
hue-spark

5.9.3. hue设置hive,impala

主要是:hue_safety_valve.ini 的 Hue 服务高级配置代码段(安全阀)

[desktop]
app_blacklist=hbase,search,sqoop,security,spark
[spark]
livy_server_host=192.168.1.111
livy_server_port=8998
livy_server_session_kind=local
sql_server_host=192.168.1.111
sql_server_port=18000
[beeswax]
hive_server_host=192.168.1.191
hive_server_port=10000
hive_conf_dir=/opt/apache-hive-2.3.3-bin/conf
server_conn_timeout=120
[metastore]
force_hs2_metadata=true
[impala]
server_host=192.168.1.191

5.9.4. hue-livy-spark

1) 安装livy
参考资料:
https://blogs.msdn.microsoft.com/pliu/2016/06/18/run-hue-spark-notebook-on-cloudera
download Livy

yum -y install unzip
wget http://archive.cloudera.com/beta/livy/livy-server-0.5.0.zip
scp 192.168.1.115:/data/cdh/ livy-0.5.0-incubating-bin.zip /data/cdh/
unzip /data/cdh/livy-0.5.0-incubating-bin.zip -d /opt/
//set environment variables for Livy
echo “export SPARK_HOME=/opt/cloudera/parcels/SPARK2/lib/spark2”>>/etc/profile
echo “export HADOOP_CONF_DIR=/etc/hadoop/conf”>>/etc/profile
echo “export SPARK_CONF_DIR=/etc/spark2/conf”>>/etc/profile
echo “export HUE_SECRET_KEY=hue”>>/etc/profile
echo “export SPARK_DIST_CLASSPATH=/opt/cloudera/parcels/CDH/jars/*”>>/etc/profile
echo “export HADOOP_USER_NAME=hdfs”>>/etc/profile
echo “. /etc/profile”>> /opt/livy-0.5.0-incubating-bin/conf/livy-env.sh
su hdfs /opt/livy-server-0.3.0/bin/livy-server #这里不用su hdfs,因为HADOOP_USER_NAME设置了

这里看一下配置,其余不设置

livy.spark.master = yarn
livy.spark.deployMode = client
livy.server.session.timeout-check = true
livy.server.session.timeout = 1h

在conf中建立链接

ln -s /opt/apache-hive-2.3.3-bin/conf/hive-site.xml hive-site.xml

2) 在hue中设置

[desktop]
app_blacklist=
[spark]
server_url=http://192.168.1.193:8998/
livy_server_host=192.168.1.193
livy_server_session_kind=local
languages=’[{“name”: “Scala”, “type”: “scala”},{“name”: “Python”, “type”: “python”},{“name”: “Impala SQL”, “type”: “impala”},{“name”: “Hive SQL”, “type”: “hive”},{“name”: “Text”, “type”: “text”}]’

3) 测试
在hue中写入测试代码,注意这些代码自带sc,而且,最后一句是返回,仅供测试代码。
这里写图片描述
代码如下

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
var textpath="hdfs://wbyhdfs/user/admin/a.txt"
//看这里直接用了sc
val sparkContext = sc 
val lines: RDD[String] = sparkContext.textFile(textpath);
val words: RDD[String] = lines.flatMap(line => {line.split("\t")})
println(words)
val fun = (word: String) => (word, 1)
val pair: RDD[(String, Int)] = words.map(fun)
val result: RDD[(String, Int)] = pair.reduceByKey((u: Int, v: Int) => {v + u})
val end: RDD[(String, Int)] = result.sortBy(x => x._2, false)
val iterator = end.toLocalIterator;
while (iterator.hasNext) {
    println(iterator.next())
    println("TEST:success!!!")
}
//这里不要有,否则只返回这一句
// println("TEST:success!!!") 

运行结果如下:
这里写图片描述
5.10. 安装Kafka-manager
下载:https://download.csdn.net/download/jiu123ba/9937296
参考:https://blog.csdn.net/yuan_xw/article/details/79188565
安装详情如下:

unzip kafka-manager-1.3.3.7.zip -d /opt/
cd kafka-manager-1.3.3.7
vim conf/application.conf

修改,注意kafka的zk路径

kafka-manager.zkhosts=”192.168.1.190:2181,192.168.1.191:2181,192.168.1.192:2181/kafka”

添加默认端口

http.port=49000

运行过程

rm -rf /opt/kafka-manager-1.3.3.7/RUNNING_PID
bin/kafka-manager -Dconfig.file=conf/application.conf

运行如下,注意先删除节点:

source /etc/profile && rm -rf /opt/kafka-manager-1.3.3.7/RUNNING_PID && nohup /opt/kafka-manager-1.3.3.7/bin/kafka-manager -Dconfig.file=/opt/kafka-manager-1.3.3.7/conf/application.conf &

5.11. 导表权限控制

5.11.1. 设置hue的C组用户权限

管理员进入
设置C组,开启权限如下: impala.access, jobbrowser.access
新建用户cdemo,密码为cdemo,取消创建主目录,设置好邮箱,归为C组。
这里写图片描述
5.11.2. 设置lmpala的sentry权限
参考文献:https://blog.csdn.net/yu616568/article/details/53639963
步骤如下:
1) 开启lmpala,sentry组件,保证运行良好。
2) 在lmpala中开启sentry和配置运行参数。
这里写图片描述
这里写图片描述
详细参数如下:根据脚本的地址和内容修改

-server_name=server1
-authorization_policy_file=/user/hive/sentry/sentry-provider.ini
-authorization_policy_provider_class=org.apache.sentry.provider.file.LocalGroupResourceAuthorizationProvider

而脚本要上传到相应的hdfs文件,内容如下:注意换行的写法:逗号-空格-斜线-换行。


$ cat /tmp/sentry-provider.ini
[databases]
#Defines the location of the per DB policy file for the customers DB/schema
#db1 = hdfs://cdh1:8020/user/hive/sentry/db1.ini
[groups]
a = any_operation
b = ods_seclect
c = ods_c
[roles]
any_operation = server=server1->db=*->table=*->action=*
ods_seclect = server=server1->db=ods_crawler->table=*->action=SELECT
ods_c = server=server1->db=ods_crawler->table=crawler_weibo_tweet_info->action=SELECT, \
server=server1->db=ods_crawler->table=crawler_weibo_account_friend_list->action=SELECT, \
server=server1->db=ods_crawler->table=crawler_weibo_account_media_list->action=SELECT, \
server=server1->db=ods_crawler->table=crawler_weibo_media_comment_list->action=SELECT
[users]
hue = a
hive= a
ademo=a
bdemo =b
cdemo=c
yuanyihan=c
$ sudo -u hdfs hadoop fs -rm -r /user/hive/sentry/sentry-provider.ini
$ sudo -u hdfs hadoop fs -put sentry-provider.ini /user/hive/sentry/
$ sudo -u hdfs hadoop fs -chown hive:hive /user/hive/sentry/sentry-provider.ini
$ sudo -u hdfs hadoop fs -chmod 640 /user/hive/sentry/sentry-provider.ini

最后的效果如下:
登陆:http://192.168.1.192:8888/hue/
用户登陆:cdemo
这里写图片描述

至此,lmpala鉴权设置完毕。

好了,文章分节上传如下:亲测可用,如果有问题,联系18192015917(叫我:涵哥,白哥,帅哥。。都行)

之一:概要

之二:基础

之三:组件

之四:踩坑

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值