Centos7.4.1离线部署CDH5.14.2
一、注意事项
1. 所有步骤如无特别说明都是要在所有服务器上都执行一遍
2. 所有的准备工作都要做,不要漏了或者错了,不然后面出现各种问题再改都是轻的,由此引发的其他的问题就严重多了
3. 所有操作均在root用户下进行
4. 以下是Centos7以tar包形式安装
5. 操作系统为Centos7, 下载的对应Tar包是centos7的,parcels包是el7,否则版本不符合会有n多坑(请各位大侠勿跳)
在生产环境中,很多时候集群管理者并没有开放root权限给你来安装CDH,这时候管理者只会开放部分权限,这时涉及这些已经开放的权限时,必须运用sudo执行。本文接下来先从root权限入手
二、软件包下载地址
这里下载的主要是CM Tar包离线安装, 因为后续安装需要MySQL数据库,所以后续需要下载Mysql的驱动Jar包,还需要下载Oracle的官方JDK1.7以上
- 再强调一遍,操作系统为Centos7: 下载的对应Tar包是centos7的,parcels包是el7,否则版本不符合会有n多坑
- Cloudera ManagerTar包下载地址(选择centos7的版本):Tar包下载地址
- CDH安装包地址(下载对应的3个文件包):CDH parcels包下载地址
- jdbc驱动的MySQL下载地址:驱动下载
- Oracle JDK下载:下载地址
三、安装步骤
1. 首先得安装Centos7操作系统(安装步骤略)
2.修改网络配置和主机名(切换到root用户下)
vi /etc/sysconfig/network
加上
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=gxqpt_cdh01
NTPSERVERARGS=iburst
3.修改网卡信息注释IPV6相关信息
注意:cdh搭建需禁止ipv6(NETWORKING_IPV6 = no)
如果不禁止ipv6会导致通信产生问题,通信一有问题,各个进程可能挂掉,进程超时等问题
4、关闭防火墙和selinux,并设置开机关闭(所有节点)
1)关闭防火墙
查看防火前状态: systemctl status firewalld
查看防火墙是否在运行:firewall-cmd --state
关闭防火墙: systemctl stop firewalld
禁用防火墙:systemctl disable firewalld
2)关闭selinux
vi /etc/sysconfig/selinux 修改SELINUX=disabled
5、修改主机域名映射:vi /etc/hosts(所有节点)
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
192.168.30.85 cdh01
192.168.30.86 cdh02
192.168.30.87 cdh03
6、windows电脑也添加域名映射,路径是:
C:\Windows\System32\drivers\etc\hosts,修改和Linux主机名
192.168.30.85 cdh01
192.168.30.86 cdh02
192.168.30.87 cdh03
7、禁用IPV6
echo "#禁用IPv6 " >> /etc/modprobe.d/tuned.conf
echo "alias net-pf-10 off" >> /etc/modprobe.d/tuned.conf
echo "alias ipv6 off" >> /etc/modprobe.d/tuned.conf
查看是否追加成功 tail /etc/modprobe.d/tuned.conf
8、关闭透明大页面(所有节点)
1) 临时关闭透明大页面(立即生效)
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
2) 永久关闭透明大页面(重启生效)
echo ' ' >> /etc/rc.local
echo '# 关闭大透明页面' >> /etc/rc.local
echo 'echo never > /sys/kernel/mm/transparent_hugepage/defrag' >> /etc/rc.local
echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.local
3)查看是否已经关闭
cat /sys/kernel/mm/transparent_hugepage/defrag
cat /sys/kernel/mm/transparent_hugepage/enabled
9、修改swappiness
#临时生效
sysctl -w vm.swappiness=10
重启后永久修改
echo "vm.swappiness=10" >> /etc/sysctl.conf
10、修改好以后重启系统
Reboot
11、打通ssh,设置无密码登陆(所有节点)
1)生成秘钥
执行ssh-****** -t rsa,一路回车,生成无密码的**对。
2)复制公钥:
cd ~/.ssh/
cp id_rsa.pub authorized_keys
# 下面的命令是把其他主机的公钥复制到本机
ssh-copy-id -i /root/.ssh/id_rsa.pub -p 53535 [email protected]主机名
3)测试
这时候连接的时候需要加上端口号才能连接 ssh -p 53535 主机名
免密出现权限问题:
ssh登录出现:permission denied(publickey.gssapi-with-mic)
解决方法:
修改/etc/ssh/sshd-config文件,将其中的:
PermitRootLogin no修改为yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys前面加上#屏蔽掉
PasswordAuthentication no修改为yes
最后重启sshd服务即可!
12、操作系统语言统一采用英文版
# 查看操作系统系统语言
echo $LANG
# 修改操作系统系统语言
vim /etc/sysconfig/i18n
LANG="en_US.UTF-8"
四、JDK环境
CDH运行环境是Oracle的JDk1.7/1.8环境,需要卸载Centos系统自带的jdk,安装自己的JDK,下载OracleJDK需要注意的是JDK会有两个版本(奇数版本和偶数版本,强烈推荐奇数版本,奇数版本是bug修复的版本),安装CDH自带JDK
1、卸载原有JDK
1)查看原有JDK
rpm -qa|grep java 查看已安装的JDK信息
rpm –ga|grep gcj
2)卸载之
rpm -e --nodeps tzdata-java-2018e-3.el6.noarch java-1.6.0-openjdk-1.6.0.41-1.13.13.1.el6_8.x86_64 java-1.5.0-gcj-1.5.0.0-29.1.el6.x86_64 java-1.7.0-openjdk-1.7.0.181-2.6.14.10.el6.x86_64 java_cup-0.10k-5.el6.x86_64
2、安装JDK
rpm -ivh jdk-8u201-linux-x64.rpm
3、验证是否安装成功
1)输入java
2)javac
3)java -version
注意:其他机器也需要同样的JDK环境
4、JDK安装完成后配置环境变量
Vi /etc/profile编辑后加入jdk路径信息,安装的jdk路径默认在/usr/java/目录下
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export JRE_HOME=/usr/java/jdk1.8.0_201-amd64/jre
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
5、source /etc/profile
四、Centos7安装时间同步器保证时间同步ntp
Yum install –y ntp
启动:systemctl start ntpd
开机启动:chkconfig ntpd on
注:集群必须保证时间同步,如果时间不同步后面安装的组件会挂掉
五、卸载、安装Mysql并创建表
1、卸载:
1)检查mysql老版本
rpm -qa|grep -i mysql
2)停止mysqld服务
Service mysqld stop
3)删除之前的mysql安装包
rpm -e –-nodeps mysql 包名..
4)查找mysql相关文件目录
find / -name mysql
将找到的文件夹或文件删除
5)再次查看是否还有mysql安装包
rpm -qa|grep -i mysql
6)如果有则删之、无则安装自己下载的mysql
2、安装mysql
#注意:CentOS7 yum不再按照默认的MySQL了,而是使用MariaDB
1)安装MariaDB
yum install -y mysql mysql-devel
yum install -y mariadb mariadb-server
2)启动mariadb
systemctl start mariadb
3)修改密码
/usr/bin/mysql_secure_installation
安装好的mariadb初始密码没有设置的话是空,直接回车后就可以修改免密
4)、进行Mysql的密码设置及其他基本配置 /usr/bin/mysql_secure_installation --user=mysql
5)登陆Mysql数据库
mysql -uxxx -pxxx
6)添加远程登陆权限
Grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
重新加载权限
7)flush privileges;
8) Window通过navicat远程访问连接成功
六、驱动jar包拷贝
1、将Mysql驱动包放入三台服务器的Java 共享目录下
mv mysql-connector-java-5.1.41.jar mysql-connector-java.jar
2、远程拷贝到其他服务器上
scp /usr/share/java/ mysql-connector-java.jar cdh02: /usr/share/java/
scp /usr/share/java/ mysql-connector-java.jar cdh03: /usr/share/java/
3、必备数据库 创建及授权
create database if not exists amon default charset utf8 collate utf8_general_ci;
create database if not exists rman default charset utf8 collate utf8_general_ci;
create database if not exists nav default charset utf8 collate utf8_general_ci;
create database if not exists navms default charset utf8 collate utf8_general_ci;
create database if not exists hue default charset utf8 collate utf8_general_ci;
create database if not exists sentry default charset utf8 collate utf8_general_ci;
create database if not exists cm default charset utf8 collate utf8_general_ci;
create database if not exists reports default charset utf8 collate utf8_general_ci;
create database if not exists hive;
create database if not exists oozie;
grant all on hive.* to 'hive'@'%' identified by 'hive' with grant option;
grant all on oozie.* to 'oozie'@'%' identified by 'oozie' with grant option;
grant all on hue.* to 'hue'@'%' identified by 'hue' with grant option;
grant all on amon.* to 'amon'@'%' identified by 'amon' with grant option;
grant all on rman.* to 'rman'@'%' identified by 'rman' with grant option;
grant all on nav.* to 'nav'@'%' identified by 'nav' with grant option;
grant all on navms.* to 'navms'@'%' identified by 'navms' with grant option;
grant all on sentry.* to 'sentry'@'%' identified by 'sentry' with grant option;
grant all on reports.* to reports @'%' identified by 'reports' with grant option;
grant all on cm.* to 'cm'@'%' identified by 'cm' with grant option;
grant all on *.* to reports @'%' identified by '*' with grant option;
4、flush privileges;
七、安装必备软件
yum -y install psmisc
yum -y install libxslt
yum -y install screen
yum -y install telnet
yum -y install lrzsz
八 、安装依赖
yum install -y bind-utils libxslt cyrus-sasl-plain cyrus-sasl-gssapi portmap fuselibs /lib/lsb/init-functions httpd mod_ssl openssl-devel python-psycopg2 MySQL python fuse
九、安装Cloudera Manager Server 和Agent
1、主节点解压cloudera-manager安装包到指定路径/opt/下
tar -zxf cloudera-manager-el7-cm5.14.2_x86_64.tar.gz -C /opt/cloudera-manager
2、为cloudera-manager创建数据库
首先拷贝mysql驱动包放到/opt/cm-5.14.2/share/cmf/lib/中
cp ..()路径/mysql-connector-java-5.1.44/mysql-connector-java-5.1.44-bin.jar /opt/cm-5.14.2/share/cmf/lib/
3、创建用户
sudo useradd --system --home=/opt/cloudera-manager/cm-5.14.2/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
4、在主节点初始化数据库
/opt/cloudera-manager/cm-5.14.2/share/cmf/schema/scm_prepare_database.sh mysql -h localhost -uroot -p123456 --scm-host localhost scm root 123456
scm是初始化数据库名称,如果已经存在删除或者更换名称
5、Agent配置
修改主节点的主机名并同步到其他节点
修改配置文件
vim /opt/cloudera-manager/cm-5.14.2/etc/cloudera-scm-agent/config.ini
将serverhost = cdh02并同步
6、同步Agent到其他节点
scp –P 53535 –r /opt/cloudera-manager/cm-5.14.2 r cdh02:/opt/cloudera-manager
scp –P 53535 -r /opt/cloudera-manager/cm-5.14.2 cdh03:/opt/cloudera-manager
7、准备Parcels,用以安装CDH5
将CHD5相关的Parcel包放到主节点的/opt/cloudera/parcel-repo/目录中
这些包包括:
最后将CDH-5.14.2-1.cdh5.14.2.p0.3-el7.parcel.sha1,重命名为CDH-5.14.2-1.cdh5.14.2.p0.3-el7.parcel.sha
注意:如果不重新命名,系统会重新下载CDH-5.14.2-1.cdh5.14.2.p0.3-el7.parcel.sha1文件
8、启动cloudera-scm-server和cloudera-scm-agent
启动脚本:通过/opt/cm-5.14.2/etc/init.d/cloudera-scm-server start启动服务端。
通过/opt/cm-5.14.2/etc/init.d/cloudera-scm-agent start启动Agent服务。
上述启动的其实是个service脚本,需要停止服务将以上的start参数改为stop就可以了,重启是restart
9、浏览器访问
通过浏览器访问7180端口,由于CM Server的启动需要花点时间,这里可能要等待一会才能访问),默认的用户名和密码均为admin
十、CDH5的安装配置
Cloudera Manager Server和Agent都启动以后,就可以进行CDH5的安装配置了,
访问7180端口进入页面
点击同意后进入页面
继续下一步,耐心等待群集安装
点击继续,这里会有主机检测,检测全部通过才可以进行下一步
十一、向服务管理平台添加服务,添加服务一项一项添加,首先先添加zookeeper服务
Zookeeper安装的节点数最好是奇数台,至少3台
至此Zookeeper添加并启动成功
十二、添加hdfs服务,在主页上点击添加服务
1、选择HDFS
2、检测初始化和启动
十三、添加yarn集群
1、选择服务
至此yarn添加成功
十四、添加spark服务
十五、添加hive服务
以后需要的服务一一添加即可,例添加Hive服务
注意:添加Hive服务需要将Mysql驱动包拷到以下目录,否则会报驱动包找不到
/opt/cloudera-manager/cloudera/parcels/CDH-5.14.2-1.cdh5.14.2.p0.3/lib/hive/lib
1、到CM主页点击添加服务选择Hive添加:
2、输入Mysql中数据库Hive名称,用户名和密码
等待配置都成功了服务就添加成功了!
以后需要添加的服务以此类推,需要数据库在Mysql中创建相应的数据库,并给数据库授权,如果不需要的服务配置过程中按需分配!
另外需要注意的是:安装CM配置CDH的时候服务需要一项一项的添加,如果一次性全部添加完会出现很多问题!
十六、CDH5.14.2添加Flume服务
选择Flume服务
添加成功,等待启动
十七、添加sqoop服务
最后将hive的执行引擎改为spark,这样运行速度会很快
十八、添加作业调度器oozie
十九、最后搭建好的集群状态(perfect!)
二十、问题小结
问题一:集群中副本不足块??
问题描述:
原因是设置的副本备份数与DataNode的个数不匹配。而dfs. replication属性默认是3,也就是说副本数—块的备份数默认为3份。但是我们这里集群只有两个DataNode。所以导致了达不到目标—副本备份不足!
解决办法:
1、 设置目标备份数为2
2、 通过命令更改当前备份数。
1、设置目标备份数为2
点击集群-HDFS-配置,搜索dfs. replication,设置为2后保存更改
dfs.replication这个参数其实只在文件被写入dfs时起作用,虽然更改了配置文件,但是不会改变之前写入的文件的备份数。
2、通过命令更改当前备份数
远程连接上服务器
切换用户:su hdfs
设置Datanode个数:hadoop fs –setrep –R 2 /
设置完后浏览器上刷新,这时hdfs状态变绿了
参考文献:https://blog.csdn.net/makai554892700/article/details/79984460
https://blog.csdn.net/zzq900503/article/details/53393721