离线搭建CDH6.X图解教程
前言
最近大数据井喷式爆发,很多公司都是从零开始,需要搭建大数据平台,很多公司选择了用CDH搭建大数据平台,CDH相对于手动搭建来说,他有安装升级方便,自动下载以来软件包,与hadoop生态系统包自动匹配等优点
环境准备
系统环境CentOS7
见前面文章:服务器CentOS 7.X系统安装配置图解教程(虚拟机通用) https://segmentfault.com/a/1190000019815245?share_user=1030000019541827
ssh免登录设置
见前面的文章:ssh配置免密登录手动版和脚本版 https://segmentfault.com/a/1190000019919600?share_user=1030000019541827
关闭防火墙
CentOS7防火墙命令 firewall-cmd --state 查看防火墙 systemctl stop firewalld.service 关闭防火墙 systemctl disable firewalld.service 永久关闭防火墙
关闭selinux
setenforce 0 (临时生效) 修改 /etc/selinux/config 下的 SELINUX=disabled (重启后永久生效)
手动时钟同步
因为离线环境,没装ntp所以使用手动的方法进行时钟同步 xshell有发送命令到所有会话,发送到三台机器时间就统一了,很方便 重启失效修改系统时间命令:date -s "2019-08-3 11:14:00"
重启不失效的修改系统时间的命令:date -s "2019-08-3 11:16:00" && hwclock --systohc
yum源仓库配置
见前面的文章:创建yum源仓库和其他服务器指向yum源仓库(局域网yum源仓库)图解教程 https://segmentfault.com/a/1190000019906869?share_user=1030000019541827
安装包准备
CM6 RPM官网:https://archive.cloudera.com/cm6/6.0.1/redhat7/yum/RPMS/x86_64/ 需要下载该链接下的所有RPM文件 然后放入/upload/cloudera-repos/文件夹下, 将jdk文件(oracle-j2sdk1.8-1.8.0+update141-1.x86_64.rpm)单独拿出来随便放一个目录我们后面单独装jdk,我是放入了opt目录下 ASC文件:https://archive.cloudera.com/cm6/6.0.1/allkeys.asc 同时还需要下载一个asc文件,同样保存到cloudera-repos目录下 要求使用5.1.26以上版本的jdbc驱动,mysql-connector-java-5.1.47.tar.gz https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.47.tar.gz CDH6 Parcels:https://archive.cloudera.com/cdh6/6.0.1/parcels/ 需要下载CDH-6.0.1-1.cdh6.0.1.p0.590678-el7.parcel和manifest.json这两个文件 mysql安装包下载 https://dev.mysql.com/downloads/mysql/ 根据系统版本下载 回头会整理把所有的打包上传到网盘方便大家统一下载
安装
配置JDK环境
cd /opt (我是将jdk放入了opt目录,具体进入哪个目录看jdk的rpm文件放在了哪里)
rpm -ivh oracle-j2sdk1.8-1.8.0+update141-1.x86_64.rpm
cd /usr/java 用ll进行查看会发现有个jdk1.8.0_141-cloudera文件
然后配置java环境变量 vim /etc/profile(新装的CentOS7系统可能没有vim命令,我习惯了vim所以提前安装了,可以用vi 或者安装vim工具) 在文件末尾添加
export JAVA_HOME=/usr/java/jdk1.8.0_141-cloudera export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile java -version
环境配置成功
配置Cloudera Manager yum库
安装httpd和createrepo yum -y install httpd createrepo
启动httpd服务并设置开机自启动: systemctl start httpd systemctl enable httpd
然后进入到前面准备好的存放Cloudera Manager RPM包的目录cloudera-repos下: cd /upload/cloudera-repos/ 生成RPM元数据:createrepo . 提示:createrpo 点 后面有个点
然后将cloudera-repos目录移动到httpd的html目录下: mv cloudera-repos /var/www/html/ 确保可以通过浏览器查看到这些RPM包:
接着在Cloudera Manager Server主机上创建cm6的repo文件(三台机器): cd /etc/yum.repos.d vim cloudera-manager.repo
添加如下内容:
[cloudera-manager] name=Cloudera Manager 6.0.1 baseurl=http://192.168.66.61/cloudera-repos/ gpgcheck=0 enabled=1
保存,退出,然后执行yum clean all && yum makecache命令:安装Cloudera Manager Server
安装Cloudera Manager Server
这一步只需要在CM Server节点上操作。 执行下面的命令: yum install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server
会在opt目录下生成cloudera文件夹
Cloudera Manager Server安装完成后,进入到本地Parcel存储库目录: cd /opt/cloudera/parcel-repo 将第一部分下载的CDH Parcel文件(CDH-6.0.1-1.cdh6.0.1.p0.590678-el7.parcel和manifest.json)上传至该目录下,然后执行命令生成sha文件:
sha1sum CDH-6.0.1-1.cdh6.0.1.p0.590678-el7.parcel | awk '{ print $1 }' > CDH-6.0.1-1.cdh6.0.1.p0.590678-el7.parcel.sha
然后执行下面的命令修改文件所有者: chown -R cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo/* 最终/opt/cloudera/parcel-repo目录内容如下:
配置mysql jdbc驱动
在所有节点,从前面下载好的mysql-connector-java-5.1.47.tar.gz包中解压出mysql-connector-java-5.1.47-bin.jar文件,将mysql-connector-java-5.1.47-bin.jar文件上传至CM Server节点上的/usr/share/java/目录下并重命名为mysql-connector-java.jar(如果/usr/share/java/目录不存在,需要手动创建): tar -zxvf mysql-connector-java-5.1.47.tar.gz mkdir -p /usr/share/java/ cp mysql-connector-java-5.1.47-bin.jar /usr/share/java/mysql-connector-java.jar
Mysql安装
安装新版mysql前,需将系统自带的mariadb-lib卸载
[root@node1 java]# rpm -qa|grep mariadb mariadb-libs-5.5.44-2.el7.centos.x86_64 [root@node1 java]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7.centos.x86_64 [root@node1 java]# rpm -qa|grep mariadb
解压安装包:新建一个目录将安装包上传到该目录下然后解压 tar -xvf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar
解压后的目录如下图所示
开始安装 ①mysql-community-common-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm
②mysql-community-libs-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm
③mysql-community-client-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm
④mysql-community-server-5.7.26-1.el7.x86_64.rpm 在安装之前需要检查libaio是否,我这个是已经有了,若没有需要在网上下载
[root@node1 mysql]# rpm -qa|grep libaio libaio-0.3.109-13.el7.x86_64 [root@node1 mysql]#
安装server rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm
发现报错说缺少net-tools依赖
如果联网可以安装依赖,此时我们暂时不理强制安装,命令如下
rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm --force --nodeps
初始化数据库 // 初始化,执行生会在/var/log/mysqld.log生成随机密码 [root@node1 mysql]# mysqld --initialize [root@node1 log]# cat /var/log/mysqld.log
更改mysql数据库目录的所属用户及其所属组 chown mysql:mysql /var/lib/mysql -R 启动mysql:systemctl start mysqld.service 查看mysql:systemctl status mysqld.service
登录到mysql,更改root用户的密码 查看初始密码:grep 'temporary password' /var/log/mysqld.log 可以发现与上面生成的密码完全一致,这个命令更直白方便一点
登录:mysql -uroot -p 复制密码输入
更改密码为123456789 set password=password('123456789');
退出,重新登录查看密码修改是否有问题 mysql -uroot -p123456789
创建CDH所需要的数据库
根据所需要安装的服务参照下表创建对应的数据库以及数据库用户,数据库必须使用utf8编码,创建数据库时要记录好用户名及对应密码:
服务名 数据库名 用户名 Cloudera Manager Server scm scm Activity Monitor amon amon Reports Manager rman rman Hue hue hue Hive Metastore Server metastore hive Sentry Server sentry sentry Cloudera Navigator Audit Server nav nav Cloudera Navigator Metadata Server navms navms
先创建4个数据库及对应用户,操作步骤如下 mysql> CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; Query OK, 1 row affected (0.00 sec) mysql> CREATE DATABASE amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; Query OK, 1 row affected (0.00 sec) mysql> CREATE DATABASE rman DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; Query OK, 1 row affected (0.00 sec) mysql> CREATE DATABASE metastore DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; Query OK, 1 row affected (0.00 sec)
然后为数据库授权设置密码并FLUSH mysql> GRANT ALL ON scm.* TO 'scm'@'%' IDENTIFIED BY '123456789'; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> GRANT ALL ON amon.* TO 'amon'@'%' IDENTIFIED BY '123456789'; Query OK, 0 rows affected, 1 warning (0.01 sec) mysql> GRANT ALL ON rman.* TO 'rman'@'%' IDENTIFIED BY '123456789'; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> GRANT ALL ON metastore.* TO 'hive'@'%' IDENTIFIED BY '123456789'; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec)
查看授权是否正确 mysql> SHOW GRANTS FOR 'scm'@'%'; +----------------------------------------------+ | Grants for scm@% | +----------------------------------------------+ | GRANT USAGE ON *.* TO 'scm'@'%' | | GRANT ALL PRIVILEGES ON `scm`.* TO 'scm'@'%' | +----------------------------------------------+ 2 rows in set (0.00 sec) mysql> SHOW GRANTS FOR 'amon'@'%'; +------------------------------------------------+ | Grants for amon@% | +------------------------------------------------+ | GRANT USAGE ON *.* TO 'amon'@'%' | | GRANT ALL PRIVILEGES ON `amon`.* TO 'amon'@'%' | +------------------------------------------------+ 2 rows in set (0.00 sec) mysql> SHOW GRANTS FOR 'rman'@'%'; +------------------------------------------------+ | Grants for rman@% | +------------------------------------------------+ | GRANT USAGE ON *.* TO 'rman'@'%' | | GRANT ALL PRIVILEGES ON `rman`.* TO 'rman'@'%' | +------------------------------------------------+ 2 rows in set (0.00 sec) mysql> SHOW GRANTS FOR 'hive'@'%'; +-----------------------------------------------------+ | Grants for hive@% | +-----------------------------------------------------+ | GRANT USAGE ON *.* TO 'hive'@'%' | | GRANT ALL PRIVILEGES ON `metastore`.* TO 'hive'@'%' | +-----------------------------------------------------+ 2 rows in set (0.00 sec)
设置Cloudera Manager 数据库
Cloudera Manager Server包含一个配置数据库的脚本。 mysql数据库与CM Server是同一台主机时命令为 /opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm root 不同台时命令为: /opt/cloudera/cm/schema/scm_prepare_database.sh mysql -h192.168.31.249 --scm-host 192.168.31.245 scm root
安装CDH节点
启动Cloudera Manager Server服务 systemctl start cloudera-scm-server 然后等待Cloudera Manager Server启动,可能需要稍等一会儿,可以通过命令 tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log去监控服务启动状态。 当看到INFO WebServerImpl:com.cloudera.server.cmf.WebServerImpl: Started Jetty server.日志打印出来后,说明服务启动成功,可以通过浏览器访问Cloudera Manager WEB界面了。
访问Cloudera Manager WEB界面开始配置
打开浏览器,访问地址:http://192.168.66.61:7180,默认账号和密码都为admin:
登录欢迎界面,点击继续
接受许可条款,点击继续
我选的是免费版,然后点击继续
群集安装
欢迎界面点击继续
输入主机名开始搜索,选择三个主机点击继续
选择自定义存储库,用我们配置的CDH仓库
JDK我们安装过了,此处不要勾选,不用再次安装
输入三台主机的root密码,统一一个密码
上面点击继续会自动安装 自动跳到parcel自用继续安装
检查主机正确性 根据提示修改没有配置准确的配置
更改linux swappiness 查看你的系统里面的swappiness cat /proc/sys/vm/swappiness 临时修改swappiness值为10 sysctl vm.swappiness=10 永久修改vim /etc/sysctl.conf 添加vm.swappiness=10
禁用透明界面大压缩 根据提示运行运行“echo never > /sys/kernel/mm/transparent_hugepage/defrag”和“echo never > /sys/kernel/mm/transparent_hugepage/enabled” 添加命令到rc.local vim /etc/rc.local
再次检查
群集设置
选择自定义服务,勾选自己需要的业务
分配服务的节点
验证数据库,点击继续
审核更改目录,这里我选择默认的了
创建/tmp目录报错
解决方法 su - hdfs
再次启动,没有问题,继续
完成