一、集群规划:
1、服务器规划
1. cdh_master 192.168.66.220
2. cdh_dataNode1 192..168.66.221
3. cdh_dataNode2 192.168.66.222
4. cdh_dataNode3 192.168.66.223
2、软件版本
cdh5.11,spark2.12, JDK1.8 ,( kylin2.3 hue)
组件 版本 说明
CDH 5.11.2 CDH5.11.2
Apache Hadoop hadoop-2.6.0 CDH5.11.2提供安装包
Hbase hbase-1.2.0 CDH5.11.2提供安装包
Apache Hive hive-1.1.0 CDH5.11.2提供安装
Hue hue-3.9.0 CDH5.11.2提供安装包
Apache Oozie oozie-4.1.0 CDH5.11.2提供安装包
Zookeeper zookeeper-3.4.5 CDH5.11.2提供安装包
JDK jdk-8u191-linux-x64
Spark2 SPARK2-2.1.0
kylin kylin2.3 (暂定)
CentOS CentOS release 6.10 (Final) 注意CDH集群linux版本,下载组件时选择对象版本下载
关于CDH软件版本中EL版本的说明:
EL是Red Hat Enterprise Linux的简写
EL6软件包用于在Red Hat 6.x, CentOS 6.x, and CloudLinux 6.x进行安装
EL5软件包用于在Red Hat 5.x, CentOS 5.x, CloudLinux 5.x的安装
EL7 软件包用于在Red Hat 7.x, CentOS 7.x, and CloudLinux 7.x的安装
CM下载地址:http://archive.cloudera.com/cm5/cm/5/
CDH下载地址:http://archive.cloudera.com/cdh5/parcels/5.11/ mysql驱动jar包下载:
注意mysql驱动jar包与mysql版本建关系:
二、集群环境准备
1、配置主机名和CDH集群主机名和ip映射
(ps:根据操作习惯可选择安装vim yum install vim -y)
修改主机名(每台机器):
vim /etc/hostname
每台机器:# vi /etc/hosts
192.168.66.220 cdh-master
192.168.66.221 chd-node1
192.168.66.222 chd-node2
192.168.66.223 chd-node2
2、集群主机间免秘钥
每台机器执行: # ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa 会生成公钥和私钥:
每台机器上会生产root目录下会生成.ssh文件夹并相应的公钥:
每台机器将生成的公钥分发给CDH集群中的其他主机(含本机):
ssh-copy-id -i /root/.ssh/id_dsa.pub cdh-master
每个.ssh下回多出一个文件authorized_keys,内容如下:
3、防火墙设置
关闭防火墙:
service iptables stop (临时关闭)
chkconfig iptables off (重启后生效)
centos7(
systemctl stop firewalld.service
systemctl disable firewalld.service
)
关闭SElinux:
setenforce 0 (临时生效)
修改 /etc/selinux/config 下的 SELINUX=disabled (重启后永久生效)4、时间同步
cdh-master作为ntp服务器与外界对时中心同步时间同步,随后对其他节点提供时间同步服务。
所有节点安装ntp服务:yum install ntp
手动时间同步:ntpdate ntp1.aliyun.com
5、安装jdk
jdk版本:jdk-8u191-linux-x64.rpm
将jdk安装包上传到服务器安装:rpm -i jdk-8u191-linux-x64.rpm
配置环境变量:
export JAVA_HOME=/usr/java/jdk1.8.0_191-amd64 export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
重新加载配置文件:. /etc/profile
6、安装mysql(CDH主节点)
将系统默认的mysql安装包升级到5.6(非必须)
6.1、先删除操作系统自带的mysql
yum list installed | grep mysql
yum -y remove mysql-libs.x86_64
重新配置安装源(此处多种方法)
如果没有按照wget,先安装wget:yum install wget
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm rpm -ivh mysql-community-release-el7-5.noarch.rpm yum repolist all | grep mysql
6.2、安装mysql数据库:yum install mysql-community-server -y
启动mysql服务:service mysqld start (systemctl start mysqld.service)
设置开机启动:
chkconfig --list | grep mysqld
chkconfig mysqld on
centos7{
systemctl enable mysql
}
6.3、查看mysql当前的字符编码:show variables like '%char%';
关闭mysql服务: service mysqld stop (systemctl stop mysqld.service)
拷贝mysql的配置文件到、etc目录下:cp /usr/share/mysql/my-default.cnf /etc/my.cnf
修改mysql配置文件 my.conf(如果不做修改8.12 会报错)
加上如下内容
[mysqld]
default-storage-engine = INNODB
character-set-server = utf8
collation-server = utf8_general_ci
[client]
default-character-set = utf8
并注释掉:
#sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 修改后启动mysql服务,检查修改后的编码状态
6.4、删除user表里的数据
use mysql;
delete from user;
重新设置一个root用户密码为ZHI123zhi :(含远程登录权限)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'ZHI123zhi'
WITH GRANT OPTION;
flush privileges;
更改后再使用mysql登录则会报错:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
应该使用下面命令登录:
mysql -uroot -pZHI123zhi
改变mysql的数据库的字符编码
先登录查看,数据库的字符编码,命令:show variables like '%char%';
6.5、创建CDH集群对应服务所需的库(根据需求):
mysql -uroot -p进入mysql命令行,创建以下数据库:
#为hive建库hive
create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci; #activity monitor
create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
#为oozie建库oozie
create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
#为hue建库hue
create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
设置root授权访问以上所有的数据库:
#授权root用户在主节点拥有所有数据库的访问权限
grant all privileges on *.* to 'root'@'%' identified by 'ZHI123zhi' with grant option;
flush privileges;
7、下载第三方依赖包(每台)
chkconfig、python、bind-utils、psmisc、libxslt、zlib、sqlite、cyrus-sasl-plain、
cyrus-sasl-gssapi、fuse、fuse-libs、redhat-lsb
升级系统内的包
yum update
安装第三包
yum install -y chkconfig python bind-utils psmisc libxslt zlib sqlite cyrus-sasl-plain cyrus-sasl-gssapi fuse fuse-libs redhat-lsb
8、CM安装-Server端
8.1 创建目录:mkdir /opt/cloudera-manager
8.2. 解压CM到/opt/cloudera-manager目录下:
tar -zxvf cloudera-manager-el6-cm5.11.2_x86_64.tar.gz -C /opt/cloudera-manager
8.3 创建cloudera-scm用户
useradd --system --home=/opt/cloudera-manager/cm-5.11.2/run/cloudera-scm-server -- no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
8.4 创建本地元数据存放的目录
mkdir /var/cloudera-scm-server
8.5 改变 cloudera-scm-server和cloudera-manager文件夹的属主
chown cloudera-scm:cloudera-scm /var/cloudera-scm-server chown cloudera-scm:cloudera-scm /opt/cloudera-manager
8.6 修改配置文件,将本机做为一个服务端(注:只能写主机名,不能写ip)
vim /opt/cloudera-manager/cm-5.11.2/etc/cloudera-scm-agent/config.ini
8.7 创建parcel-repo仓库目录
mkdir -p /opt/cloudera/parcel-repo
chown cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo 8.8 更改后缀为sha1的文件为sha
mv CDH-5.11.2-1.cdh5.11.2.p0.4-el6.parcel.sha1 CDH-5.11.2-1.cdh5.11.2.p0.4-el6.parcel.sha
8.9 移动cdm相关文件到仓库目录
cp CDH-5.11.2-1.cdh5.11.2.p0.4-el6.parcel /opt/cloudera/parcel-repo cp CDH-5.11.2-1.cdh5.11.2.p0.4-el6.parcel.sha /opt/cloudera/parcel-repo cp manifest.json /opt/cloudera/parcel-repo
8.10 创建parcels存放目录并改变属主权限(如果 Server节点也作为Agent节点执行) mkdir -p /opt/cloudera/parcels
chown cloudera-scm:cloudera-scm /opt/cloudera/parcels
8.11 加入mysql的包(所有节点)
mkdir -p /usr/share/java
mv mysql-connector-java-5.1.36.jar mysql-connector-java.jar cp mysql-connector-java.jar /usr/share/java/
8.12 初始化mysql
切换到/opt/cloudera-manager/cm-5.11.2/share/cmf/schema 目录下(先这段指令建议手动输入)
./scm_prepare_database.sh mysql cdhdb -h cdh-master -uroot -pZHI123zhi --scm-host cdh-master scm scm scm
格式:数据库类型、cdhdb 数据库名(自主命名,自动创建)、数据库服务器、用户名、密码、 cm server服务器
8.13启动
cd/opt/cloudera-manager/cm-5.11.2/etc/init.d
./cloudera-scm-server start
./cloudera-scm-agent start (如果server节点也做为agent节点)
9、CM安装-agent端(每台agent端)
9.1 创建目录:mkdir /opt/cloudera-manager
9.2 解压CM到/opt/cloudera-manager目录下:
tar -zxvf cloudera-manager-el6-cm5.11.2_x86_64.tar.gz -C /opt/cloudera-manager
9.3 创建cloudera-scm用户
useradd --system --home=/opt/cloudera-manager/cm-5.11.2/run/cloudera-scm-server -- no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
9.4 修改配置文件,指向服务端主机名(注:只能写主机名,不能写ip)
vim /opt/cloudera-manager/cm-5.11.2/etc/cloudera-scm-agent/config.ini
9.5 创建parcels存放目录并改变属主权限
mkdir -p /opt/cloudera/parcels
chown cloudera-scm:cloudera-scm /opt/cloudera/parcels 9.6 进入到init.d文件夹启动
cd /opt/cloudera-manager/cm-5.11.2/etc/init.d ./cloudera-scm-agent start
10、配置服务,
通过http://192.168.66.220 :7180访问集群
User:admin
Password:admin
登录后选择免费版
选择安装指定主机:
出现以下警告:
修改方法:
echo 10 > /proc/sys/vm/swappiness
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
10安装spark2.1.2
10.1下载对应版本的cds文件、parce文件及sha文件,manifest.json文件 https://www.cloudera.com/documentation/spark2/latest/topics/spark2_packaging.html
10.2每个节点执行下列操作:
mkdir -p /opt/cloudera/csd
修改权限:
chown cloudera-scm:cloudera-scm /opt/cloudera/csd
上传CSD包到机器的/opt/cloudera/csd目录,并且修改文件的用户和组。注意如果本目录下有其他的jar包,把删掉或者移到其他目录
10.3上传parcel包到机器的/opt/cloudera/parcel-repo目录下(server节点)
10.4重启server和agent服务
10.5把CM和集群启动起来。然后点击主机->Parcel页面,看是否多了个spark2的选项。如下图,你这里此时应该是分配按钮,点击,等待操作完成后,点击激活按钮
10.6.激活后,添加服务,添加spark2服务。