本文主要记叙了如何在centos7.2上搭建cdh平台,使用mysql为元数据管理库(官方推荐),安装了Spark2和Kafka组件。
一、软件准备
cdh5.13.3-centos7.tar.gz cm5.13.3-centos7.tar.gz
SPARK2_ON_YARN-2.3.0.cloudera3.jar
SPARK2-2.3.0.cloudera3-1.cdh5.13.3.p0.458809-el7.parcel
CDH-5.13.3-1.cdh5.13.3.p0.2-el7.parcel
KAFKA-3.1.0-1.3.1.0.p0.35.parcel
SPARK2-2.3.0.cloudera3-1.cdh5.13.3.p0.458809-el7.parcel.sha
CDH-5.13.3-1.cdh5.13.3.p0.2-el7.parcel.sha
KAFKA-3.1.0-1.3.1.0.p0.35.parcel.sha JDK:jdk-8u181-linux-x64.tar.gz
二、修改操作系统配置
关闭selinux
vi /etc/selinux/configvi /etc/selinux/config
将SELINUX=enforcing改为SELINUX=disabled
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
service iptables stop
chkconfig iptables off
安装必须的yum包
yum -y install postgresql-server
yum -y install postgresql
yum -y install httpd
yum -y install perl
yum -y install bind-utils
yum -y install libxslt
yum -y install cyrus-sasl-gssapi
yum -y install redhat-lsb
yum -y install cyrus-sasl-plain
yum -y install portmap
yum -y install fuse
yum -y install fuse-libs
yum -y install nc
yum -y install python-setuptools
yum -y install python-psycopg2
yum -y install MySQL-python
yum -y install mod_ssl
yum -y install ssh
yum -y install ntp
yum -y install wget
移除自带的openjdk
rpm -qa |grep jdk
yum -y remove 《》 #移除包
移除自带的mariadb
rpm -qa |grep mariadb
yum -y remove 《》 #移除包
修改hosts文件
vi /etc/hosts
配置主机名ip地址
设置交换空间为0
echo “vm.swappiness=0” >> /etc/sysctl.conf
提升hdfs的读写效率
配置ssh 免密信道
ssh-keygen -t rsa一键回车
ssh-copy-id -i hadoop01
ssh-copy-id -i hadoop02
ssh-copy-id -i hadoop03
ssh hadoop01
ssh hadoop02
ssh hadoop03
配置ntp服务器
vi /etc/ntp.conf
master上 配置server 127.127.1.0
slaver上配置 server
安装jdk
将jdk的压缩包放置在/usr/java/jdk1.8
tar -zvxf jdk-8u181-linux-x64.tar.gz
mv jdk1.8.0_181 jdk1.8
vi /etc/profile 写入以下脚本
export JAVA_HOME=/usr/java/jdk1.8
export JAVA_HOME=/usr/java/jdk1.8
export PATH=PATH
export CLASSPATH=.:JAVA_HOME/lib/tools.jar
完成后source /etc/profile
javac java –version检验安装情况
解压cdh文件至/var/www/html/下(master)
tar -zvxf cdh5.13.3-centos7.tar.gz
tar -zvxf cm5.13.3-centos7.tar.gz
配置本地yum源
vi /etc/yum.repos.d/cm.repo
[cloudera-manager]
name=Cloudera Manager
baseurl= http://hadoop01:/cm/5.13.3/
gpgcheck = 0
enabled = 1
vi /etc/yum.repos.d/cdh.repo
[cloudera-cdh5]
name=CDH
baseurl= http://hadoop01:/cdh/5.13.3/
enable=1
gpgcheck = 0
配置服务开机自启动
service ntpd start
chkonfig ntpd on
service iptables stop
chkconfig iptables off
service httpd start
chkconfig httpd on
机器重启
检查ntp,http服务是否启动成功
检查ntp服务是否正常
ntpq -pntpq -p
三、数据及CDH服务安装
安装mysql,创建相应的数据库并赋权(master)
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum install -y mysql-server
yum install -y mysql-devel
yum install -y mysql-connector-java
service mysqld start
/usr/bin/mysql_secure_installation
create database cm default character set utf8;
create user ‘cm’@’%’ identified by ‘123456’;
grant all privileges on cm.* to ‘cm’@’%’ with grant option; flush privileges;
create database hive default character set utf8;
create user ‘hive’@’%’ identified by ‘123456’;
grant all privileges on hive.* to ‘hive’@’%’;flush privileges;
create database rm default character set utf8;
create user ‘rm’@’%’ identified by ‘123456’;
grant all privileges on rm.* to ‘rm’@’%’;flush privileges;
create database sentry default character set utf8;
create user ‘sentry’@’%’ identified by ‘123456’;
grant all privileges on sentry.* to ‘sentry’@’%’;flush privileges;
create database oozie default character set utf8;
create user ‘oozie’@’%’ identified by ‘123456’;
grant all privileges on oozie.* to ‘oozie’@’%’;flush privileges;
create database hue default character set utf8;
create user ‘hue’@’%’ identified by ‘123456’;
grant all privileges on hue.* to ‘hue’@’%’;flush privileges;
create database nms default character set utf8;
create user ‘nms’@’%’ identified by ‘123456’;
grant all privileges on nms.* to ‘nms’@’%’;flush privileges;
安装cm实例和cm-server(master)
yum install -y cloudera-manager-daemons cloudera-manager-server
指定cm的数据库
/usr/share/cmf/schema/scm_prepare_database.sh -h 192.168.1.67 mysql cm cm 123456
启动server服务 访问master主机的7180端口地址
service cloudera-scm-server start
service cloudera-scm-server status 查看进程启动的状态
异常则去日志目录下查看
tail -30f /var/log/cloudera-scm-server/cloudera-scm-server.log
成功则访问 10.16.8.67:7180
四、CM安装CDH
访问10.16.8.67:7180
此时需要数据用户名密码,用户名是admin,密码输入即会为初始密码。
页面1勾选方框同意用户协议
页面2选择free 点击继续
配置主机地址 输入主机名称
全部勾选,继续
choose method 选择 use packages
version of cdh选择 cdh5
select 都选择 custom repository
url输入的是yum配置的地址
不勾选 install oracle java se… 继续
此处为kerber安装所必须的java安全包,没有kerberos不需要安装,有kerberos初次安装也不要安装,等环节装好再启用kerberos
不勾选single… 直接继续
root安装 所有主机接受相同的root密码 输入root的密码 继续
等待安装完成,选择core with spark
角色分配
分配角色 Hdfs角色分配如下:
Hive角色分配如下:
Hue角色分配入下:
Cloudera Managerment service角色分配如下:
Oozie spark yarn角色分配如下:
Zookeeper角色分配如下:
说明:
主角色由master承担
所有机器都是datanode
Namenode首次分配在master上,ha之后分配到slave1上
所有机器都安装zkserver
Gateway的角色在所有主机上都要有
Cdh的监控服务安装到master
继续
指定元数据管理库
五、安装spark,kafka
将parcel文件都放在master主机的/opt/cloudera/parcel-repo下(.torrent文件会自动生成,不用管)
将SPARK2_ON_YARN-2.3.0.cloudera3.jar文件放在master主机的/opt/cloudera/csd下
在cdh的parcel包管理界面刷新,依次分配和激活CDH5,kafka,Spark2(必须先激活CDH5)
在各主机配置内修改java_home为/usr/java/jdk1.8(因为spark2需要jdk1.8支持,cdh自带的为1.7)
重新部署配置,然后重启(激活或者配置修改后都需如此操作)
重启服务
重启服务才能看到Spark2服务
service cloudera-scm-server restart
service cloudera-scm-agent restart
重启完成后重新登录http://master:7180
添加kafka服务
第一次可能会启动失败,失败后直接在首页点击kafka的小扳手查看原因,点击配置修改配置,再次启动kafka
修改完成后,若启动失败,则去查看日志,很有可能是id问题:
查看角色日志报错:kafka.common.InconsistentBrokerIdException: Configured broker.id 33 doesn’t match stored broker.id 59 in meta.properties
解决办法:需把配置里的参数改为59,再启动
9.添加spark2服务
分配角色
至此,我们的安装就都已经完成啦。
六、安装测试
测试spark服务
/var/lib/hadoop-hdfs下创建data文件,内写入’1\n2\n3’
文件上传至hdfs
cd /var/lib/hadoop-hdfs
hadoop fs -put data /user/spark/
启动spark2-shell进入命令行
su hdfs
spark2-shell
val lines = sc.textFile("/user/spark/data")
lines.count
lines.first
能够运行即可,若获取不到资源,可修改下配置:
修改yarn的配置
scheduler.maximum-allocation-mb、
nodemanager.resource.memory-mb
改为8GB
测试kafka服务
使用命令创建topic
kafka-topics --create --zookeeper hadoop01,hadoop02 --replication-factor 1 --partitions 1 --topic test
查看top是否创建成功
kafka-topics --list --zookeeper hadoop01,hadoop02
最后检验机器服务
执行jps,看是否和如下图所示一致
其中DFSZFailoverController是我在做了ha之后才有的服务,无需关注,至于如何配置HA,请参考我的其他文章,谢谢。