CDH 相对于原生的HADOOP 平台具有更好的可操作性,通过页面就行控制,方便安装和管理,还可以对整个集群进行参数的调整等等。
在此也要感谢 马尔东风 https://blog.csdn.net/qq_39572733/article/details/89469741 给到的帮助。
在这里我使用了 CDH5.16.1 版本 ,那么与其对应的 软件包也需要相应下载。
1)需要用的软件包
CDH 是不需要提前下载各种 Hadoop, Hive, Hue, Sqoop 等。只需要下载CDH 相关的包。
需要用到以下包:
1. cloudera-manager-centos7-cm5.16.1_x86_64.tar.gz
2. CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel , CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel.sha ,manifest.json
如果下载的是 .sha1 结尾的文件,记得改为 .sha
2) 节点的配置:
一共3个节点,node01 、node02 、node03
CDH 分为 Server 和 Agent , Server 就相当于管理员,而 Agent 就相当于工作人员。
类似于 Namenode 和 Datanode 的关系。
配置: node01: Server 、 Agent;
node02: Agent;
node03: Agent;
之前的 Haoop 全分布式搭建步骤 中有基础配置的一部分说明,这里就讲一下简单的步骤
以下步骤在所有节点上都必须完成,下面只以一个节点为例。
1.修改服务器的名字:hostnamectl set-hostname node01 ,修改完之后需要重启,输入 reboot
2.网络设置:
1) 设置 IP 地址: vi /etc/sysconfig/network-scripts/ifcfg-ens33 ,
ifcfg-ens33 可能名称不一样,基本是 network-scripts 中的第一个文件
2)修改网络名称: vi /etc/sysconfig/network , 写入 NETWORK=yes , HOSTNAME= node01
3) 添加主机名的映射: vi /etc/hosts , 把 我写的 macnode01 对应改为 node01 就行。
4) 重新启动网络:service network restart ,记得检查节点之间是否能互 平ping
3.设置所有节点之间的免密登入:
1) ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa 生成公钥
2) ssh-copy-id node01 复制公钥到其他节点,自己节点也免密一下,node01,node02,node03 。
3)免密完成后,之后的一些修改的配置文件,可以直接把文件传送到其他节点上,方便操作。
4.防火墙设置:
1) systemctl stop firewalld.service #停止firewall
2) systemctl disable firewalld.service #禁止firewall开机启动
3) 检查是否关闭安全模式 : vi /etc/selinux/config 设置 SELINUX=disabled
5.每个节点统一时间:使用ntp ,以 node01 的时间为准,其他节点同步 node01 的时间
参考:https://blog.csdn.net/qq_38591756/article/details/85243965
详细操作流程:
1) 安装ntp: yum -y install ntp
2)设置ntp开机启动并启动ntp:systemctl enable ntpd ; systemctl start ntpd
3) 修改 node01 的配置文件(以 node01 为标准时间):vim /etc/ntp.conf
a. restrict 172.17.0.0 mask 255.255.255.0 nomodify notrap ;
掩码地址扩展为255,因此从172.17.0.1-172.17.0.254的服务器都可以使用我们的NTP服务器来同步时间
b. 指定位置添加以下代码:参考截图
server 0.cn.pool.ntp.org
server 1.cn.pool.ntp.org
server 2.cn.pool.ntp.org
server 3.cn.pool.ntp.org
restrict 0.cn.pool.ntp.org nomodify notrap noquery
restrict 1.cn.pool.ntp.org nomodify notrap noquery
restrict 2.cn.pool.ntp.org nomodify notrap noquery
restrict 3.cn.pool.ntp.org nomodify notrap noquery
server 127.0.0.1 # local clock
fudge 127.0.0.1 stratum 10
c. 修改完成后保存退出,并重启ntp(systemctl restart ntpd)
4)修改 node2 和 node3 的配置文件:vim /etc/ntp.conf
a.指定位置添加以下代码:参考截图
server 172.17.0.85 #注释:节点node01 的IP地址
restrict 172.17.0.85 nomodify notrap noquery #注释:节点node01 的IP地址
server 127.0.0.1 # local clock
fudge 127.0.0.1 stratum 10
b. systemctl restart ntpd
6. 禁止交互(以下的步骤记住也是每个节点都需要)
1)vim /etc/sysctl.conf ,添加一行 vm.swappiness=0
2)sudo sysctl vm.swappiness=0
7. 禁止大页面
1)echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
2)vim /etc/rc.local ,添加 2行:
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
3) chmod +x /etc/rc.d/rc.local
8.JDK 的安装以及设置环境变量
1) 要创建固定的 JDK 的路径
2) 在此目录下解压 JDK 的压缩文件
3)配置环境变量
9.Mysql 的安装 (在此之前可以先做快照,之后一些操作很容易会出错)
1) 先查看有没有自带的数据库,有的话就卸载掉
2) 下载mysql,并安装到指定位置
3) 启动mysql
4)查看mysql 状态
5)获取MySQL的临时密码,Mysql5.7默认安装之后root是有密码的。
YdsGaxOq>2n!
YdsGaxOq>2n!
密码登录到服务端后,必须马上修改密码,进入 mysql 界面GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
create database hive;
create database hue;
create database ooz;
create database scm;
mysql-connector-java.jar 需要在每个 节点上都上传,并放入 /usr/share/java 目录下
1.不同节点创建文件夹并授权,server 就是node01
sudo useradd --system --home=/opt/cloudera-manager/cm-5.16.1/run/cloudera-scm-server --no-create-home --shell=/bin/false
2.上传所需要的压缩包
将cloudera-manager-centos7-cm5.16.1_x86_64.tar.gz,CDH5.16.1的三个文件上传到服务器,自己创建一个文件夹。
3.在所有节点,解压 cloudera-manager-centos7-cm5.16.1_x86_64.tar.gz 到/opt/cloudera-manager目录。
4.在所有的agent节点,修改主机 节点名
5.在server节点上执行命令。初始化数据库scm。mysql table username password分别代表:数据库类型 database名称 数据库用户名 数据库密码
注意:这条命令要执行成功,需要server和MySQL在一个节点上。如果不在一个节点上,需要使用-hmysqlserver命令指定MySQL主机位置,比如如果MySQL安装机器IP为192.168.1.101,那么执行命令为
6.将 CDH 的 3个 文件 上传至主节点 node01 /opt/cloudera/parcel-repo 路径下
7.启动 CM
8.当问server:7180
不要急,如果没出现可以等一下,不过一般会很快就出现。
如果出现上面界面就说明成功了,用户名密码都是admin。接下来就是一步一步的配置。
9.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上传到/var/lib/oozie/
3)hue load balancer启动失败
运行下面两行命令,再从7180界面重启就好了(记得是安装load balancer的那台服务器)
搭建好之后修改权限 dfs.permissions,去掉勾就好了,不然root用户操作不了hdfs。
4)hue 需要装一些 package
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