序言
本文集群搭建为三台机器,cdh版本为5.13.0,以下是安装过程中所用到的软件包等,可以自行下载。
一、前期准备
1.安装环境
- 系统:centos7.5/最小安装版本/64位
- 内存:主节点 --> 32G/从节点 --> 16G
- 三台机器组成小集群(物理机)
- cdh01
- cdh02
- cdh03
- 需要下载的安装包
- cloudera-manager-centos7-cm5.13.0_x86_64.tar.gz
- CDH相关(注意下载相应系统的安装包)
- CDH-5.13.0-1.cdh5.13.0.p0.29-el7.parcel
- CDH-5.13.0-1.cdh5.13.0.p0.29-el7.parcel.sha1
- manifest.json(manifest.json需要网页上打开后复制全部内容,在桌面新建txt文件,粘贴复制的内容后修改后缀名为.json)
-
- jdk-8u144-linux-x64.tar.gz
- mysql-5.7.21-1.el7.x86_64.rpm-bundle.tar
- mysql-connector-java-5.1.47.tar
二、环境配置
注意:所有操作都需要使用root权限操作
- 修改hosts(三台)
- vi /etc/hosts
-
10.81.22.184 cdh01 10.81.22.188 cdh02 10.81.22.189 cdh03
- 注:修改 /etc/hosts,此处一定要注意,不要按照网上有的说明,将127.0.0.1那一行里的localhost.localdomain改成主机名称,在安装Cloudera Agent的时候会识别不出名称和IP
- 修改主机名
- vim /etc/sysconfig/network
-
NETWORKING=yes HOSTNAME=cdh01
- 修改selinux
- vi /etc/selinux/config
-
将selinux的值修改成disabled SELINUX=disabled
- 关闭防火墙
- systemctl stop firewalld
- systemctl disable firewalld
- systemctl status firewalld
- 三台机器设置免密登陆,打通ssh
- 思路:第一台机器配置authorized_keys,scp到第二台机器,将第二台机器的公钥添加到authorized_keys,然后将其scp到第三台,以此类推,直到配置到最后一台机器,将最后一台机器的authorized_keys scp到所有节点,如下(见1)
- 安装ntp时间同步
- 集群中所有主机必须保持时间同步,如果时间相差较大会引起各种问题。具体思路如下:
主节点作为NTP服务器与外界对时中心同步时间,随后对所有数据节点节点提供时间同步服务。
所有数据节点节点以主节点为基础同步时间所有节点安装相关组件执行以下命令: - yum install -y ntp #安装ntp服务(所有节点)
- vim /etc/ntp.conf
- 主节点
-
driftfile /var/lib/ntp/drift restrict 127.0.0.1 restrict -6 ::1 # 允许内网其他机器同步时间 restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap # 中国这边最活跃的时间服务器 : http://www.pool.ntp.org/zone/cn server 210.72.145.44 perfer # 中国国家受时中心 server 202.112.10.36 # 1.cn.pool.ntp.org server 59.124.196.83 # 0.asia.pool.ntp.org # 允许上层时间服务器主动修改本机时间 restrict 210.72.145.44 nomodify notrap noquery restrict 202.112.10.36 nomodify notrap noquery restrict 59.124.196.83 nomodify notrap noquery # 外部时间服务器不可用时,以本地时间作为时间服务 server 127.127.1.0 # local clock fudge 127.127.1.0 stratum 10 includefile /etc/ntp/crypto/pw keys /etc/ntp/keys #只保留以上内容其他全部注释掉
- 从节点
-
driftfile /var/lib/ntp/drift restrict default kod nomodify notrap nopeer noquery restrict -6 default kod nomodify notrap nopeer noquery restrict 127.0.0.1 restrict -6 ::1 server cdh01 #改成自己的主节点名称 restrict 192.168.1.135 nomodify notrap noquery server 127.127.1.0 # local clock fudge 127.127.1.0 stratum 10 includefile /etc/ntp/crypto/pw keys /etc/ntp/keys #只保留以上内容其他全部注释掉
- 集群中所有主机必须保持时间同步,如果时间相差较大会引起各种问题。具体思路如下:
- 设置开机启动ntp服务
- 关闭chronyd服务
- systemctl disable chronyd.service
- 开机自启动
- systemctl enable ntpd.service
- 关闭chronyd服务
- 开启ntp服务
- systemctl start ntpd
- 查看ntp运行状态
- ntpstat
- 出现即为同步成功
- 安裝jdk(所有节点)
- 卸载Centos 系统自带的JDK并重新安装oracle的JDK(所有节点)
- CentOS,自带OpenJdk,不过运行CDH5需要使用Oracle的Jdk,需要Java 7的支持。
- 卸载自带的OpenJDK的使用以下代码查询的Java相关的包 - rpm -qa | grep java
- rpm -qa | grep jdk - yum -y remove xxjdk #删除所有的jdk
- yum remove -y *jdk*
- yum remove -y *java*
-
- JDK 可以去官网下载 下载地址:
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
(本次使用的是jdk-8u191-linux-x64.rpm) - rpm -ivh jdk-8u202-linux-x64.rpm
- 由于是RPM包并不需要我们来配置环境变量,我们只需要配置一个全局的JAVA_HOME变量即可,执行命令:
- echo "JAVA_HOME=/usr/java/latest/" >> /etc/environment
- JDK 可以去官网下载 下载地址:
- 主节点安装mysql
- 卸载mariadb
- 此处需要注意的是centos 7 默认安装的是mariadb,如果不卸载直接安装的话会报错,报错信息mariadb-libs is obsoleted by mysql-community-libs-5.7.21-1.el7.x86_64
- 注意:必须先做一下步骤,要先删除mariadb
- 此处需要注意的是centos 7 默认安装的是mariadb,如果不卸载直接安装的话会报错,报错信息mariadb-libs is obsoleted by mysql-community-libs-5.7.21-1.el7.x86_64
- rpm -qa | grep mariadb #查看安装信息
- rpm --nodeps -e 安装信息(mariadb-libs-5.5.56-2.el7.x86_64) #根据查找到的软件包信息卸载
- rpm --nodeps -e mariadb-libs-5.5.56-2.el7.x86_64
- rpm --nodeps -e mariadb-libs-5.5.56-2.el7.x86_64
- yum -y remove + 包名
- yum -y remove mariadb-libs-5.5.56-2.el7.x86_64
- 卸载mariadb
- 安装mysql(如果使用postgres作为元数据库,此处安装mysql额意思忽略)
- mysql安装包下载
https://dev.mysql.com/downloads/file/?id=474679
- 下载的安装包为:mysql-5.7.21-1.el7.x86_64.rpm-bundle.tar
- 安顺序执行
- tar -xf mysql-5.7.21-1.el7.x86_64.rpm-bundle.tar
- 安装rpm -ivh mysql-community-server-5.7.21-1.el7.x86_64.rpm的时候报错如下:
- 这个报错的意思是需要安装net-tools包和perl包:可以先yum安装一下。
- yum install net-tools #安装net-tools包
- yum install perl #安装perl包
- 这个报错的意思是需要安装net-tools包和perl包:可以先yum安装一下。
- 注:必须按以下顺序安装以下rpm包 - rpm -ivh mysql-community-common-5.7.21-1.el7.x86_64.rpm
- rpm -ivh mysql-community-libs-5.7.21-1.el7.x86_64.rpm
- rpm -ivh mysql-community-client-5.7.21-1.el7.x86_64.rpm
- rpm -ivh mysql-community-server-5.7.21-1.el7.x86_64.rpm
- rpm -ivh mysql-community-libs-compat-5.7.21-1.el7.x86_64.rpm(compat解决hue数据库连接不上)
- rpm -ivh mysql-community-devel-5.7.21-1.el7.x86_64.rpm #安装mysqlclient需要用到
- 安装rpm -ivh mysql-community-server-5.7.21-1.el7.x86_64.rpm的时候报错如下:
- 启动mysql
- systemctl start mysqld
- systemctl enable mysqld
- systemctl daemon-reload
- systemctl start mysqld
- 查看root初始密码
- cat /var/log/mysqld.log |grep password
- tar -xf mysql-5.7.21-1.el7.x86_64.rpm-bundle.tar
- mysql安装包下载
-
-
- 登录mysql数据库
- mysql -uroot –p密码 # 密码为上一步看到的
- 首先,修改validate_password_policy参数的值
- set global validate_password_policy=0;
- set global validate_password_policy=0;
- 这样,判断密码的标准就基于密码的长度了。这个由validate_password_length参数来决定。validate_password_length参数默认为8,可以设置为其它值,最小4位
- set global validate_password_length=3;
- set global validate_password_special_char_count=0;
- set global validate_password_mixed_case_count=0;
- set global validate_password_number_count=0;
- set password = password('123');
- Query OK, 0 rows affected,1 warning (0.00 sec) --> 修改成功
- Query OK, 0 rows affected,1 warning (0.00 sec) --> 修改成功
- 注:如果直接修改密码会报错
- set global validate_password_length=3;
- mysql -uroot –p密码 # 密码为上一步看到的
- 登录mysql数据库
-
- 授权用户root使用密码passwd从任意主机连接到mysql服务器
- GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123' WITH GRANT OPTION;
- flush privileges;
- 创建所需要的数据库及用户
-
在mysql连接工具下执行(否则可能会报错) create database metastore default character set utf8; CREATE USER 'hive'@'%' IDENTIFIED BY 'hive'; GRANT ALL PRIVILEGES ON metastore. * TO 'hive'@'%'; create database hive default character set utf8; GRANT ALL PRIVILEGES ON hive. * TO 'hive'@'%'; create database cm default character set utf8; CREATE USER 'cm'@'%' IDENTIFIED BY 'cm'; GRANT ALL PRIVILEGES ON cm.* TO 'cm'@'%'; create database am default character set utf8; CREATE USER 'am'@'%' IDENTIFIED BY 'am'; GRANT ALL PRIVILEGES ON am. * TO 'am'@'%'; create database rm default character set utf8; CREATE USER 'rm'@'%' IDENTIFIED BY 'rm'; GRANT ALL PRIVILEGES ON rm. * TO 'rm'@'%'; create database hue default character set utf8; CREATE USER 'hue'@'%' IDENTIFIED BY 'hue'; GRANT ALL PRIVILEGES ON hue. * TO 'hue'@'%'; create database oozie default character set utf8; CREATE USER 'oozie'@'%' IDENTIFIED BY 'oozie'; GRANT ALL PRIVILEGES ON oozie. * TO 'oozie'@'%'; flush privileges;
-
- GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123' WITH GRANT OPTION;
- 授权root用户在主节点拥有所有数据库的访问权限
- grant all privileges on *.* to 'root'@'cdh01' identified by '123' with grant option;
- 安装postgres(如果使用mysql数据库请忽略此处安装)
-
yum install postgresql-server yum -y install epel-release yum -y install python-pip yum -y install python-psycopg2 sudo pip install psycopg2 echo 'LC_ALL="en_US.UTF-8"' >> /etc/locale.conf sudo su -l postgres -c "postgresql-setup initdb"
- vim /var/lib/pgsql/data/pg_hba.conf
-
在host all all 127.0.0.1/32 ident前一行 添加host all all 127.0.0.1/32 md5 (或host all all 0.0.0.0/0 md5)
-
- vim /var/lib/pgsql/data/postgresql.conf
-
添加listen_addresses = ‘*’
-
-
sudo systemctl enable postgresql #开机自启 sudo systemctl restart postgresql #重启
- 数据库设置
-
sudo -u postgres psql CREATE ROLE scm LOGIN PASSWORD ‘scm’; CREATE DATABASE scm OWNER scm ENCODING ‘UTF8’; CREATE ROLE amon LOGIN PASSWORD ‘amon’; CREATE DATABASE amon OWNER amon ENCODING ‘UTF8’; CREATE ROLE rman LOGIN PASSWORD ‘rman’; CREATE DATABASE rman OWNER rman ENCODING ‘UTF8’; CREATE ROLE hue LOGIN PASSWORD ‘hue’; CREATE DATABASE hue OWNER hue ENCODING ‘UTF8’; CREATE ROLE hive LOGIN PASSWORD ‘hive’; CREATE DATABASE metastore OWNER hive ENCODING ‘UTF8’; CREATE ROLE sentry LOGIN PASSWORD ‘sentry’; CREATE DATABASE sentry OWNER sentry ENCODING ‘UTF8’; CREATE ROLE nav LOGIN PASSWORD ‘nav’; CREATE DATABASE nav OWNER nav ENCODING ‘UTF8’; CREATE ROLE navms LOGIN PASSWORD ‘navms’; CREATE DATABASE navms OWNER navms ENCODING ‘UTF8’; CREATE ROLE oozie LOGIN PASSWORD ‘oozie’; CREATE DATABASE oozie OWNER oozie ENCODING ‘UTF8’; ALTER DATABASE Metastore SET standard_conforming_strings=off; ALTER DATABASE Oozie SET standard_conforming_strings=off;
-
-
- 安装cm
- 下载cm5.13.0包
- http://archive.cloudera.com/cm5/cm/5/
- 将下载好的cloudera-manager-centos7-cm5.13.0_x86_64.tar.gz解压到主节点的/opt/,解压出来的文件夹为cloudera与cm-5.13.0
- 为Cloudera Manager建立数据库,此处需要前边下载好的mysql-connector-java-5.1.47-bin.jar
- cp /root/software/mysql-connector-java-5.1.47/mysql-connector-java-5.1.47-bin.jar /usr/java/
- cp /root/software/mysql-connector-java-5.1.47/mysql-connector-java-5.1.47-bin.jar /opt/cm-5.13.0/share/cmf/lib/
- cp /root/software/mysql-connector-java-5.1.47/mysql-connector-java-5.1.47-bin.jar /usr/java/
- 主节点执行(mysql执行方式,如果使用postgres请忽略)
-
/opt/cm-5.13.0/share/cmf/schema/scm_prepare_database.sh mysql -uroot -p123 scm scm scm
-
- 主节点执行(postgres执行方式,如果使用mysql请忽略)
-
/opt/cm-5.13.0/share/cmf/schema/scm_prepare_database.sh postgresql scm scm scm
-
- 配置Agent
- vim /opt/cm-5.13.0/etc/cloudera-scm-agent/config.ini
-
server_host=cdh01
-
- vim /opt/cm-5.13.0/etc/cloudera-scm-agent/config.ini
- 拷贝文件到其他子节点
- scp -r /opt/cm-5.13.0/ root@hywx189:/opt/
- scp -r /opt/cm-5.13.0/ root@hywx189:/opt/
- scp -r /opt/cm-5.13.0/ root@hywx189:/opt/
- 所有节点上创建用户
-
useradd --system --home=/opt/cm-5.13.0/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
-
- 准备parcels,将CDH相关文件拷贝到主节点/opt/cloudera/parcel-repo/
- 相关文件
- 下载地址:https://archive.cloudera.com/cdh5/parcels/5.13.0.29
- 注:需要将CDH-5.13.0-1.cdh5.13.0.p0.29-el7.parcel.sha1改成CDH-5.13.0-1.cdh5.13.0.p0.29-el7.parcel.sha,否则安装时会重新下载,很重要!!
-
mv CDH-5.13.0-1.cdh5.13.0.p0.29-el7.parcel.sha1 CDH-5.13.0-1.cdh5.13.0.p0.29-el7.parcel.sha
- 注:需要将CDH-5.13.0-1.cdh5.13.0.p0.29-el7.parcel.sha1改成CDH-5.13.0-1.cdh5.13.0.p0.29-el7.parcel.sha,否则安装时会重新下载,很重要!!
- 下载cm5.13.0包
- 启动
-
#主节点 /opt/cm-5.13.0/etc/init.d/cloudera-scm-server start #主节点及其他节点 /opt/cm-5.13.0/etc/init.d/cloudera-scm-agent start
- 启动需要点时间,可以查看数据库scm中的hosts表,如果里面出现节点信息表示server启动完成
-
- 开始安装Hadoop集群
- 启动成功后 浏览器访问:
- http://主节点ip:7180 (用户名、密码:admin)
- CM Manager && Agent 成功启动后,登录前端页面进行 CDH 安装配置。步骤如下:
- 注意:此处需要勾选所有机器
- 注:此处按照自己下载的版本进行安装即可
-
第一个警告直接在所有节点上执行
-
echo 10 > /proc/sys/vm/swappiness
-
-
第二个警告按照上面的说明,在所有节点上执行这两条命令
-
echo never >/sys/kernel/mm/transparent_hugepage/defrag >> /etc/rc.local
-
echo never > /sys/kernel/mm/transparent_hugepage/enabled>> /etc/rc.local
-
同时同一命令添加到 /etc/rc.local 等初始化脚本中,以便在系统重启时予以设置。
-
- 注:或可选择所有服务
- 此处hive ,oozie会安装失败,失败信息如下。因为我们使用了MySQL作为hive元数据存储,需要将mysql驱动拷贝到hive和oozie目录下
-
解决方法(需要在所有节点上执行)
-
cp /opt/cm-5.13.0/share/cmf/lib/mysql-connector-java-5.1.47-bin.jar /opt/cloudera/parcels/CDH-5.13.0-1.cdh5.13.0.p0.29/lib/hive/lib/
-
cp /opt/cm-5.13.0/share/cmf/lib/mysql-connector-java-5.1.47-bin.jar /var/lib/oozie/
-
- 启动成功后 浏览器访问:
- 到此安装完成!