1. 系统环境修改
1.1 修改主机名
所有节点均需执行该步骤
#主机 192.168.5.11 输入如下指令
hostnamectl set-hostname cdh1
#主机 192.168.5.12 输入如下指令
hostnamectl set-hostname cdh2
#主机 192.168.5.13 输入如下指令
hostnamectl set-hostname cdh3
#主机 192.168.5.14 输入如下指令
hostnamectl set-hostname cdh4
1.2 修改host文件
所有节点均需执行该步骤
注意配置私网IP地址,且要求IP与主机名一一对应对应
vi /etc/hosts
192.168.5.11 cdh1
192.168.5.12 cdh2
192.168.5.13 cdh3
192.168.5.14 cdh4
如下图所示,其他主机均按照如下方式配置即可
1.3 关闭防火墙
所有节点均需执行该步骤
如果弹出“Unit firewalld.service could not be found.”提示,证明没有安装防火墙模块,直接跳过该步骤。
#查看防火墙状态
systemctl status firewalld
#关闭防火墙
systemctl stop firewalld
#开机关闭防火墙
systemctl disable firewalld
1.4 禁用SELinux
所有节点均需执行该步骤
vi /etc/selinux/config
将第7行由
SELINUX=enforcing
修改为
SELINUX=disabled
如下图所示,其他主机照做即可
1.5 卸载chrony,安装ntp
所有节点均需执行该步骤
redhat7默认安装的chrony,需要首先卸载而后安装ntp服务
yum -y remove chrony
yum -y install ntp
对1台主机做了如下截图,其他主机与该主机一致。
个人设定192.168.5.11为服务端,192.168.5.12~14为客户端,见如下表格
IP地址 | 主机名 | NTP服务器 |
---|---|---|
192.168.5.11 | cdh1 | 服务端 |
192.168.5.12 | cdh2 | 客户端 |
192.168.5.13 | cdh3 | 客户端 |
192.168.5.14 | cdh4 | 客户端 |
1.5.1 配置ntp服务端
在192.168.5.11节点,即cdh1节点配置即可
#备份原有的配置文件
cp /etc/ntp.conf /etc/ntp.conf_bak
#创建目录
mkdir -p /var/lib/ntp/
mkdir -p /var/log/ntp/
#修改服务端配置(重要)
vi /etc/ntp.conf
#------------------------------------------------------------------------------------------
# ntp服务端设置
#------------------------------------------------------------------------------------------
# ignore 关闭所有的 NTP 联机服务
# nomodify 客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时。
# notrust 客户端除非通过认证,否则该客户端来源将被视为不信任子网
# noquery 不提供客户端的时间查询
# 注意,如果参数没有设定,那就表示该 IP (或子网)没有任何限制!
#------------------------------------------------------------------------------------------
#记录当前时间服务器,与上游服务器的时间差的文件
driftfile /var/lib/ntp/drift
#对于默认的client拒绝所有的操作
restrict default kod nomodify notrap nopeer noquery
#允许本机地址一切的操作
restrict 127.0.0.1
restrict -6 ::1
#设置同步服务器
server 0.cn.pool.ntp.org iburst
server 1.cn.pool.ntp.org iburst
server 2.cn.pool.ntp.org iburst
server 3.cn.pool.ntp.org iburst
#外界同步源无法联系时,使用本地时间为同步服务
server 127.127.1.0
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
#指定日志文件位置,需要手动创建
logfile /var/log/ntp/ntp.log
服务端配置我做了截图,没有截完整,但是主体部分清晰,如下所示:
1.5.2 配置ntp客户端
在192.168.5.12~14节点,即cdh2、cdh3、cdh4节点配置
#备份原有的配置文件
cp /etc/ntp.conf /etc/ntp.conf_bak
#创建目录
mkdir -p /var/lib/ntp/
mkdir -p /var/log/ntp/
#修改客户端配置(重要)
vi /etc/ntp.conf 按照如下步骤操作:
1. 将21-24行的内容全部注释(步骤原理核心是注释掉默认配置中的ntp server)
2. 在25行添加如下内容
server cdh1
操作内容做了截图,如下所示:
1.5.3 配置ntp服务
所有主机均需要完成如下指令
#查看ntp服务
systemctl status ntpd
#启动ntp服务
systemctl start ntpd
#设置ntp开机启动
systemctl enable ntpd
#查看ntp状态,是否同步成功
ntpq -p
NTP服务端正常时如何显示?如下图所示,前面有个“星星符号”即可
那客户端呢?同样也是如此,前面有个小符号“*”,如下图所示:
1.6 设置SWAP分区值
所有主机均需完成该指令,重启后生效
由于大数据的特殊性,尽可能的不使用交换分区,提升数据处理效率,使用如下指令即可,机器重启后生效(一会儿全部配置完成后需要重启,现在先别重启哦)
echo vm.swappiness=0 >> /etc/sysctl.conf
1.7 设置透明大页面
所有主机均需完成该指令,重启后生效
vim /etc/rc.d/rc.local
将下述内容添加至文件结尾部分
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
我截了一个主机的图片,其他主机一样配置就行了,如下图所示:
1.8 配置yum源
1.8.1 配置系统源
所有节点均需要配置系统源,否则在安装agent时候会缺依赖包
1.8.1.1 创建目录
mkdir /var/www/html/os7/Packages
1.8.1.2 上传rpm
将ISO中Packages包的所有rpm包上传至该目录,如下图所示
1.8.1.3 创建repo
cd /var/www/html/os7/Packages
#按照顺序安装,前两个包是第三个包的依赖,所以必须先安装
rpm -ivh deltarpm-3.6-3.el7.x86_64.rpm
rpm -ivh python-deltarpm-3.6-3.el7.x86_64.rpm
rpm -ivh createrepo-0.9.9-28.el7.noarch.rpm
#创建本地的系统repo包路径
createrepo /var/www/html/os7
#转移默认的repo包
mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/* /etc/yum.repos.d/bak
#编辑本地的系统repo包
vi /etc/yum.repos.d/os7_local.repo
[os7_local]
name=os7_local
#baseurl = http://192.168.5.11/os7
baseurl=file:///var/www/html/os7
enabled=1
gpgcheck=0
1.8.1.4 更新源
yum clean all
yum makecache
yum repolist
本地系统的repo文件截图,请参阅。
更新源后本地源的资源数量
1.8.2 安装与配置httpd
在192.168.5.11节点,即cdh1节点配置即可
#安装
yum -y install httpd
#配置
修改 /etc/httpd/conf/httpd.conf 第284行
由
AddType application/x-gzip .gz .tgz
修改为
AddType application/x-gzip .gz .tgz .parcel
#重启服务并设定开机启动
systemctl status httpd
systemctl start httpd
systemctl enable httpd
修改http服务的配置文件
更新http服务的启动状态
1.8.3 配置cdh源
只在192.168.5.11节点,即cdh1节点配置即可
1.8.3.1 下载
CDH6.0.1 下载地址 下载如下包:
CDH-6.0.1-1.cdh6.0.1.p0.590678-el7.parcel
CDH-6.0.1-1.cdh6.0.1.p0.590678-el7.parcel.sha256
manifest.json
1.8.3.2 上传
# 1. 如果没有该目录,进行创建
mkdir -p /var/www/html/cdh6/6.0.1
# 2. 将上述的3个文件上传至 /var/www/html/cdh6/6.0.1
mv CDH-6.0.1-1.cdh6.0.1.p0.590678-el7.parcel* /var/www/html/cdh6/6.0.1
mv manifest.json /var/www/html/cdh6/6.0.1
# 3. 做createrepo
createrepo /var/www/html/cdh6
1.8.4 配置cm源
只在192.168.5.11节点,即cdh1节点配置即可
1.8.4.1 下载
cm6.0.1 下载地址
allkeys.asc 下载地址
下载如下包
cloudera-manager-agent-6.0.1-610811.el7.x86_64.rpm
cloudera-manager-daemons-6.0.1-610811.el7.x86_64.rpm
cloudera-manager-server-6.0.1-610811.el7.x86_64.rpm
cloudera-manager-server-db-2-6.0.1-610811.el7.x86_64.rpm
oracle-j2sdk1.8-1.8.0+update141-1.x86_64.rpm
allkeys.asc
1.8.4.2 上传
#上传至 /var/www/html/cm6/6.0.1 ,如果没有目录请创建该目录。
mkdir -p /var/www/html/cm6/6.0.1
#将上述的6个文件上传至 /var/www/html/cm6/6.0.1
mv cloudera-manager-*.rpm /var/www/html/cm6/6.0.1
mv oracle-j2sdk1.8-1.8.0+update141-1.x86_64.rpm /var/www/html/cm6/6.0.1
mv allkeys.asc /var/www/html/cm6/6.0.1
#createrepo
createrepo /var/www/html/cm6
#创建cm6的yum源
vi /etc/yum.repos.d/cloudera-local.repo
[cloudera-manager]
name=cloudera-manager
#也可以写主机名,例如:baseurl=http://cdh1/cm6
baseurl=http://192.168.5.11/cm6
enabled=1
gpgcheck = 0
1.9 安装JDK1.8 && 规范用户与组
所有节点均需进行
mkdir -p /usr/java/
rpm -qa|grep jdk
tar -xzvf /usr/java/jdk-8u131-linux-x64.tar.gz -C /usr/java/
chown -R root:root /usr/java/jdk1.8.0_131
chmod -R 755 /usr/java/jdk1.8.0_131
ln -s /usr/java/jdk1.8.0_131 /usr/java/jdk
vim /etc/profile
alias vi='vim'
export JAVA_HOME=/usr/java/jdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
为了规范大数据的所属组与用户,请按照规范进行管理,例如大数据所属的用户ID从1500开始,即如下所示进行创建用户与所属组,如果有必要可以先清理已经存在的大数据账户
#删除用户
for i in cloudera-scm zookeeper hdfs yarn mapred oozie hue hive impala flume kudu hbase kafka pig mysql solr llama httpfs sqoop kms sqoop sqoop2 sentry spark spark2; do userdel -r ${i} ; done
#删除组
for i in cloudera-scm zookeeper hdfs yarn mapred oozie hue hive impala flume kudu hbase kafka pig mysql solr llama httpfs sqoop kms sqoop sqoop2 sentry spark spark2; do groupdel ${i} ; done
#删除文件夹
for dir in `find / -name \*cloudera-scm\* -type d` ; do rm -rf ${dir}; done
for dir in `find / -name \*zookeeper\* -type d` ; do rm -rf ${dir}; done
for dir in `find / -name \*hdfs\* -type d` ; do rm -rf ${dir}; done
for dir in `find / -name \*yarn\* -type d` ; do rm -rf ${dir}; done
for dir in `find / -name \*mapred\* -type d` ; do rm -rf ${dir}; done
for dir in `find / -name \*oozie\* -type d` ; do rm -rf ${dir}; done
for dir in `find / -name \*hue\* -type d` ; do rm -rf ${dir}; done
for dir in `find / -name \*hive\* -type d` ; do rm -rf ${dir}; done
for dir in `find / -name \*impala\* -type d` ; do rm -rf ${dir}; done
for dir in `find / -name \*flume\* -type d` ; do rm -rf ${dir}; done
for dir in `find / -name \*kudu\* -type d` ; do rm -rf ${dir}; done
for dir in `find / -name \*hbase\* -type d` ; do rm -rf ${dir}; done
for dir in `find / -name \*kafka\* -type d` ; do rm -rf ${dir}; done
for dir in `find / -name \*pig\* -type d` ; do rm -rf ${dir}; done
for dir in `find / -name \*mysql\* -type d` ; do rm -rf ${dir}; done
for dir in `find / -name \*solr\* -type d` ; do rm -rf ${dir}; done
for dir in `find / -name \*llama\* -type d` ; do rm -rf ${dir}; done
for dir in `find / -name \*httpfs\* -type d` ; do rm -rf ${dir}; done
for dir in `find / -name \*sqoop\* -type d` ; do rm -rf ${dir}; done
for dir in `find / -name \*kms\* -type d` ; do rm -rf ${dir}; done
for dir in `find / -name \*sqoop\* -type d` ; do rm -rf ${dir}; done
for dir in `find / -name \*sqoop2\* -type d` ; do rm -rf ${dir}; done
for dir in `find / -name \*sentry\* -type d` ; do rm -rf ${dir}; done
for dir in `find / -name \*spark\* -type d` ; do rm -rf ${dir}; done
for dir in `find / -name \*spark2\* -type d` ; do rm -rf ${dir}; done
#新增组
groupadd -g 1501 cloudera-scm
groupadd -g 1502 zookeeper
groupadd -g 1503 hdfs
groupadd -g 1504 yarn
groupadd -g 1505 mapred
groupadd -g 1506 oozie
groupadd -g 1507 hue
groupadd -g 1508 hive
groupadd -g 1509 impala
groupadd -g 1510 flume
groupadd -g 1511 kudu
groupadd -g 1512 hbase
groupadd -g 1513 kafka
groupadd -g 1514 pig
groupadd -g 1515 mysql
groupadd -g 1516 solr
groupadd -g 1517 llama
groupadd -g 1518 httpfs
groupadd -g 1519 sqoop
groupadd -g 1520 kms
groupadd -g 1521 spark2
groupadd -g 1522 sqoop2
groupadd -g 1523 sentry
groupadd -g 1524 spark
#新增用户
useradd -u 1501 -g cloudera-scm -m -s /bin/bash cloudera-scm
useradd -u 1502 -g zookeeper -m -s /bin/bash zookeeper
useradd -u 1503 -g hdfs -m -s /bin/bash hdfs
useradd -u 1504 -g yarn -m -s /bin/bash yarn
useradd -u 1505 -g mapred -m -s /bin/bash mapred
useradd -u 1506 -g oozie -m -s /bin/bash oozie
useradd -u 1507 -g hue -m -s /bin/bash hue
useradd -u 1508 -g hive -m -s /bin/bash hive
useradd -u 1509 -g impala -m -s /bin/bash impala
useradd -u 1510 -g flume -m -s /bin/bash flume
useradd -u 1511 -g kudu -m -s /bin/bash kudu
useradd -u 1512 -g hbase -m -s /bin/bash hbase
useradd -u 1513 -g kafka -m -s /bin/bash kafka
useradd -u 1514 -g pig -m -s /bin/bash pig
useradd -u 1515 -g mysql -m -s /bin/bash mysql
useradd -u 1516 -g solr -m -s /bin/bash solr
useradd -u 1517 -g llama -m -s /bin/bash llama
useradd -u 1518 -g httpfs -m -s /bin/bash httpfs
useradd -u 1519 -g sqoop -m -s /bin/bash sqoop
useradd -u 1520 -g kms -m -s /bin/bash kms
useradd -u 1521 -g spark2 -m -s /bin/bash spark2
useradd -u 1522 -g sqoop2 -m -s /bin/bash sqoop2
useradd -u 1523 -g sentry -m -s /bin/bash sentry
useradd -u 1524 -g spark -m -s /bin/bash spark
1.10 安装mysql数据库
在192.168.5.11节点,即cdh1节点执行即可
卸载mariadb
yum -y remove mariadb*
mysql5.7.24 下载地址 下载并解压至服务器,按照如下顺序安装rpm包
tar -xf mysql-5.7.24-1.el7.x86_64.rpm-bundle.tar
yum -y install perl*
rpm -ivh mysql-community-common-5.7.24-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.24-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.24-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-5.7.24-1.el7.x86_64.rpm
rpm -ivh mysql-community-embedded-5.7.24-1.el7.x86_64.rpm
rpm -ivh mysql-community-embedded-compat-5.7.24-1.el7.x86_64.rpm
rpm -ivh mysql-community-minimal-debuginfo-5.7.24-1.el7.x86_64.rpm
rpm -ivh mysql-community-embedded-devel-5.7.24-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.24-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.24-1.el7.x86_64.rpm
rpm -ivh mysql-community-test-5.7.24-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-minimal-5.7.24-1.el7.x86_64.rpm --force --nodeps
修改mysql-root密码步骤
vim /etc/my.cnf
最后1行添加:
skip-grant-tables
重启服务:
systemctl restart mysqld
免密码登陆,修改root密码:
mysql -uroot
use mysql;
update user set authentication_string=password('123456') where user='root';
exit;
vim /etc/my.cnf
将刚才添加的 skip-grant-tables 删除或注释
重启服务:
systemctl restart mysqld
添加开机启动:
systemctl enable mysqld
#用上述方法修改的root密码必须使用root再次登陆并修改,否则会报错“ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.”,可以使用如下方式解决该报错:
mysql -uroot -p
set global validate_password_policy=0;
set global validate_password_mixed_case_count=0;
set global validate_password_number_count=3;
set global validate_password_special_char_count=0;
set global validate_password_length=1;
alter user 'root'@'localhost' identified by '123456';
如下图所示为mysql已经正常配置完成的状态
1.11 创建CM,Hive等需要的表
#在192.168.5.11本机用root+密码方式登陆mysql
mysql -uroot -p
#下面为添加各组件与应用的知识库
CREATE DATABASE IF NOT EXISTS hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
GRANT ALL PRIVILEGES ON hive.* TO 'hive'@'192.168.5.%' IDENTIFIED BY 'Passwd_hive_123';
CREATE DATABASE IF NOT EXISTS cm DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
GRANT ALL PRIVILEGES ON cm.* TO 'cm'@'192.168.5.%' IDENTIFIED BY 'Passwd_cm_123';
CREATE DATABASE IF NOT EXISTS amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
GRANT ALL PRIVILEGES ON amon.* TO 'amon'@'192.168.5.%' IDENTIFIED BY 'Passwd_amon_123';
CREATE DATABASE IF NOT EXISTS rm DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
GRANT ALL PRIVILEGES ON rm.* TO 'rm'@'192.168.5.%' IDENTIFIED BY 'Passwd_rm_123';
CREATE DATABASE IF NOT EXISTS oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
GRANT ALL PRIVILEGES ON oozie.* TO 'oozie'@'192.168.5.%' IDENTIFIED BY 'Passwd_oozie_123';
CREATE DATABASE IF NOT EXISTS hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
GRANT ALL PRIVILEGES ON hue.* TO 'hue'@'192.168.5.%' IDENTIFIED BY 'Passwd_hue_123';
#刷新权限
FLUSH PRIVILEGES;
创建知识库完成后的mysql状态如下图所示
1.12 安装jdbc驱动
在192.168.5.11节点,即cdh1节点进行即可,因为我预设该节点为hive、oozie、sentry等等的管理节点,如果你想用其他节点做管理节点,那么其他节点也使用如下方式处理即可
mysql-jdbc驱动包 下载地址
按照如下指令完成操作
mkdir -p /usr/share/java/
mv /root/mysql-connector-java-5.1.47-bin.jar /usr/share/java
ln -s /usr/share/java/mysql-connector-java-5.1.47-bin.jar /usr/share/java/mysql-connector-java.jar
1.13 修改Linux时区
所有节点均需执行该步骤
timedatectl set-timezone Asia/Shanghai
timedatectl
1.14 配置互信
所有节点均需执行该步骤,核心内容是cdh1可以无密码跳转到其他所有节点,但是为了后期的管理方便,全部节点的无密码跳转也是非常有必要的
#所有节点执行如下指令,生成公钥与私钥,一路回车即可
ssh-keygen -t rsa
#将所有节点的公钥整理合并后写入authorized_keys,而后分发所有节点,细节就不写了,杀猪杀屁股,一个人一种杀法。
cat /root/.ssh/id_rsa.pub
#把authorized_keys权限进行变更
chmod 600 ~/.ssh/authorized_keys
最终成果如下图所示
1.15 重启所有服务器
init 6
2 cdh软件包
2.1 下载
CM6.1下载地址
allkeys.asc下载地址
CDH6.1下载地址
2.2 上传cm与cdh包
mkdir -p /var/www/html/cdh6/6.0.1
mkdir -p /var/www/html/cm6/6.0.1
将
CDH-6.0.1-1.cdh6.0.1.p0.590678-el7.parcel
CDH-6.0.1-1.cdh6.0.1.p0.590678-el7.parcel.sha256
manifest.json
拷贝至
/var/www/html/cdh6/6.0.1
将
cloudera-manager-agent-6.0.1-610811.el7.x86_64.rpm
cloudera-manager-daemons-6.0.1-610811.el7.x86_64.rpm
cloudera-manager-server-6.0.1-610811.el7.x86_64.rpm
cloudera-manager-server-db-2-6.0.1-610811.el7.x86_64.rpm
oracle-j2sdk1.8-1.8.0+update141-1.x86_64.rpm
allkeys.asc
拷贝至
/var/www/html/cm6/6.0.1
createrepo /var/www/html/cm6
createrepo /var/www/html/cdh6
2.3 配置cm源
所有主机均需要操作
vi /etc/yum.repos.d/cloudera-local.repo
[cloudera-manager]
name=cloudera-manager
baseurl=http://192.168.5.11/cm6
enabled=1
gpgcheck = 0
yum clean all
yum makecache
yum repolist
2.4 安装
在192.168.5.11节点,即cdh1主节点完成服务侧的安装与启动
#安装服务端cm
yum install -y cloudera-manager-server
#初始化mysql中的知识库cm
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql cm cm CDH6_cm
systemctl status cloudera-scm-server
systemctl start cloudera-scm-server
systemctl enable cloudera-scm-server
2.5 网页端登陆
使用cdh1的外网ip+7180端口登陆cm首页,用户名与密码初始值均为admin
下面我主要列举与截取重要步骤,非重要步骤直接点击下一步即可
1.到 http://initd.org/psycopg/tarballs/PSYCOPG-2-5/ 下载 psycopg2-2.5.5.tar.gz
2. 上传解压并编译(所有主机均需按照如下步骤处理)
yum install -y gcc postgresql postgresql-server postgresql-devel python-devel
tar -xzf psycopg2-2.5.5.tar.gz
cd psycopg2-2.5.5
python setup.py build
python setup.py install
3. 重新检查主机