因为之前我搭建的是Apache原生的,维护起来很麻烦,重启什么的都需要写脚本,太麻烦了,所以这次公司需要搭建集群,我就选择了CDH5.16.1的进行搭建。
环境是ContOS7系统的6台机器,1.8T磁盘,32G内存,8核16线程的CPU。
ip | 主机名 | 角色 |
---|---|---|
192.168.25.120 | server | server |
192.168.25.121 | agent1 | agent |
192.168.25.122 | agent2 | agent |
192.168.25.123 | agent3 | agent |
192.168.25.124 | agent4 | agent |
192.168.25.125 | agent5 | agent |
不想自己找资源的朋友点这个
链接:点我哟~~~
提取码:a6cu
1. JDK的安装(压缩包里有jdk1.8的包),先(java -version)看一下有没有自带的,有的话删除了再装。
mkdir -p /usr/share/java/
cd /usr/share/java/
把JDK上传到这个目录下,然后解压。
tar -zxvf ./jdk-8u201-linux-x64.tar.gz
配置环境变量
vim /etc/profile
在最后面添加
#jdk配置
export JAVA_HOME=/usr/share/java/jdk1.8.0_201
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin
2.主机名映射
vim /etc/hosts
添加
192.168.25.120 server
192.168.25.121 agent1
192.168.25.122 agent2
192.168.25.123 agent3
192.168.25.124 agent4
192.168.25.125 agent5
3.关闭防火墙(每台都要做)
systemctl stop firewalld
systemctl disable firewalld
4.禁止交互(每台都要做)
vim /etc/sysctl.conf
添加一行 vm.swappiness=0
sudo sysctl vm.swappiness=0
5.禁止大页面(每台都要做)
执行命令1
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
执行命令2
vim /etc/rc.local
增加两行:
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
执行命令3
chmod +x /etc/rc.d/rc.local
6.免密登录
ssh-keygen -t rsa
四个回车就好了
cd ~/.ssh
然后
ssh-copy-id xxxx
xxxx就是你要发送的主机名,前提是你做了主机名映射,不然就写对应的ip。
7.mysql的安装
先查看有没有自带的数据库,有的话就卸载掉
rpm -qa | grep mariadb
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
如果你的机器有网的话看这里
cd /usr/local/src
wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm
rpm -ivh mysql57-community-release-el7-8.noarch.rpm
yum -y install mysql-server
四条命令依次执行就好了。
没网的话需要自己下载离线包安装哟。之前的连接里有mysql5.7.24的离线包。
百度一个离线安装的教程就好了,我没记错的话是解压之后依次安装common,lib,client,server。
然后你还需要做的就是修改初始密码,创建表,给权限,这里我就把命令放在下面;
grant all on *.* to '你的用户名'@'%' identified by '你的密码' with grant option; -- 授权
create database hive;
create database hue;
create database ooz;
create database scm;
我都空格好了,直接复制执行就好。
上传数据库驱动,压缩包里有
在所有节点,将准备好的数据库驱动上传到/usr/share/java目录下
友情提示:到这里你的准备工作就做完了,如果是虚拟机里做的,这里最好做一个快照。
1.不同节点创建文件夹并授权
mkdir -p /opt/cloudera-manager --在所有上创建
mkdir -p /opt/cloudera/parcel-repo --在server上创建
mkdir -p /opt/cloudera/parcels --在所有的agent节点上创建
mkdir -p /opt/cloudera-manager/cm-5.16.1/run/cloudera-scm-agent --在所有的agent节点上创建
chown -R cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo/ -在server上
chown -R cloudera-scm:cloudera-scm /opt/cloudera/parcels -在agent上
2.上传源
将cloudera-manager-centos7-cm5.16.1_x86_64.tar.gz,CDH5.16.1的三个文件上传到服务器,自己创建一个文件夹。(记住创建在哪了)
3.在所有节点,解压该文件到/opt/cloudera-manager目录。
tar -zxvf /xxx/cloudera-manager-centos7-cm5.16.1_x86_64.tar.gz -C /opt/cloudera-manager --xxx是你们的目录,不要直接复制
4.在所有节点,创建用户,这是CM需要使用的用户
sudo useradd --system --home=/opt/cloudera-manager/cm-5.16.1/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
5.在所有的agent节点,执行命令
vim /opt/cloudera-manager/cm-5.16.1/etc/cloudera-scm-agent/config.ini
修改server_host为server节点的主机名,我的就是server_host=server
6.在server节点上执行命令。初始化数据库scm。mysql table username password分别代表:数据库类型 database名称 数据库用户名 数据库密码
/opt/cloudera-manager/cm-5.16.1/share/cmf/schema/scm_prepare_database.sh mysql table username password
注意:这条命令要执行成功,需要server和MySQL在一个节点上。如果不在一个节点上,需要使用-hmysqlserver命令指定MySQL主机位置,比如如果MySQL安装机器IP为192.168.1.101,那么执行命令为
/opt/cloudera-manager/cm-5.16.1/share/cmf/schema/scm_prepare_database.sh -h 192.168.1.101 mysql table username password
如果出现如下提示,则证明CM元数据创建成功。
All done, your SCM database is configured correctly!
7.将准备好的CDH5.16.1的3个文件,上传至主节点/opt/cloudera/parcel-repo路径下
记得把一个.sha1的文件重命名为.sha
8.启动CM
/opt/cloudera-manager/cm-5.16.1/etc/init.d/cloudera-scm-server start --server节点运行
/opt/cloudera-manager/cm-5.16.1/etc/init.d/cloudera-scm-agent start --agent节点运行
9.当问server:7180
不要急,如果没出现可以等一下,不过一般会很快就出现。
如果出现上面界面就说明成功了,用户名密码都是admin。接下来就是一步一步的配置
10.web界面操作安装cdh
这里我就不细说了,根据提示的步骤一步一步来就行了。
但是补充几点。
1)hue
如果显示链接不上数据库
通过查看日志:tail -f 300 /opt/cloudera-manager/cm-5.16.1/log/cloudera-scm-server/cloudera-scm-server.log
可以看到在说什么这个错误:
Error loading MySQLdb module: libmysqlclient.so.18: cannot open shared object file: No such file or directory
原因是:
/usr/lib64/mysql目录下没有libmysqlclient.so.18文件,可能可以看到libmysqlclient.so.20文件
原因是mysql-community-libs-compat-5.7.23-1.el7.x86_64.rpm没有安装(具体版本和你安装的MySQL版本有关)
解决办法是:
去MySQL官网,找到安装的对应MySQL版本的这个mysql-community-libs-compat-5.7.23-1.el7.x86_64.rpm包,只有几兆
然后下载下来上传到server上(我的server和MySQL安装在同一个节点上,如果server和MySQL不在同一个节点,那么可以尝试这两个节点都去安装一下),安装:
rpm -ivh mysql-community-libs-compat-5.7.23-1.el7.x86_64.rpm
然后群集设置重新检测一下就OK。
怎么找rpm包,可以参考https://blog.csdn.net/smiles13/article/details/81460617
2)oozie界面
oozie界面不展示是因为缺少ExtJs2.2。
下载ext-2.2.zip
将ext-2.2.zip上传到/var/lib/oozie/
cd /var/lib/oozie/
unzip ./ext-2.2.zip
chown -R oozie:oozie ext-2.2
然后去刷新页面就会好了。
3.hue load balancer启动失败
运行下面两行命令,再从7180界面重启就好了(记得是安装load balancer的那台服务器)
yum -y install httpd
yum -y install mod_ssl
搭建好之后修改权限 dfs.permissions,去掉勾就好了,不然root用户操作不了hdfs。
现在就大功告成了。
补充:
hue就是不成功,运行这个安装
sudo yum install krb5-devel cyrus-sasl-gssapi cyrus-sasl-deve libxml2-devel libxslt-devel mysql mysql-devel openldap-devel python-devel python-simplejson sqlite-devel -y