Linux系列---CentOS7安装CDH5.14.0过程全纪录
引言这是在虚拟机上自己搭建的一个cdh集群,某些细节可能会有一些疏漏没有记载,但是大体流程绝无错误,可以放心参考,并且因为测试需要在一台真正的服务器上搭建过一个单节点的cdh,也是按照这个流程,安装cm时这一个仅有的服务器既是server同样也是agent。所以,hadoop无论是什么版本,单机和集群都可以适用。(集群可以,单机必然也可以)目录简介环境及软件说明环境说明...
引言
这是在虚拟机上自己搭建的一个cdh集群,某些细节可能会有一些疏漏没有记载,但是大体流程绝无错误,可以放心参考,并且因为测试需要在一台真正的服务器上搭建过一个单节点的cdh,也是按照这个流程,安装cm时这一个仅有的服务器既是server同样也是agent。所以,hadoop无论是什么版本,单机和集群都可以适用。(集群可以,单机必然也可以)
目录
二.配置主机名和hosts(每台主机都要做,并且根据各个主机情况做相应的修改)
六。配置NTP服务。标准的做法是配置NTP服务器,但是这里为了方便就用简化的方式配置了。
简介
以前安装过CentOS5.11,是通过VNC桌面的方式安装,并且第一次安装过程失败过,感觉通过桌面方式安装不怎么好,步骤也感觉比较混乱。最近有空重新安装了一次,都是在命令行中进行,没有使用桌面,并且一次成功,现在恢复安装前的快照,重新来一次,并做记录。
环境及软件说明
环境说明
本人PC虚拟机VM12,里面安装了3台CentOS7.集群环境规划如下:
CPU | IP | 主机名 | 角色 | 内存 |
1核心2线程 | 192.168.9.14 | cdh1 | CM server,agent | 8G |
1核心2线程 | 192.168.9.15 | cdh2 | agent | 1.5G |
1核心2线程 | 192.168.9.16 | cdh3 | agent | 1.5G |
我的笔记本电脑16G内存,只能上面这样规划了,最后CDH是能安装成功的,只不过没法用,资源太少了。-_-!
所需软件及说明
1.JDK1.8 下载地址:
链接:https://pan.baidu.com/s/1wiM5de1B8Tk67y1TyPQQUg 密码:skoe
说明:
去Oracle官网下,现在点击下载会让你登陆,这时可以右键迅雷下载,可以不用登陆;这里提供一个我的网盘下载链接,另外别用1.7
2.Cloudera Manager 下载地址:
https://archive.cloudera.com/cm5/cm/5/
说明:CM的各个平台,版本的包都在这里了,各取所需。根据我的环境,下载的是 cloudera-manager-centos7-cm5.14.0_x86_64.tar.gz
3.CDH 下载地址:
http://archive.cloudera.com/cdh5/parcels/5.14/
说明:和上面CM一样,各取所需。需要下载3个文件,我下载的是 CDH-5.14.4-1.cdh5.14.4.p0.3-el7.parcel.sha1 (这个文件下载下来后,一定要把后缀 .sha1 改为 .sha), CDH-5.14.4-1.cdh5.14.4.p0.3-el7.parcel, manifest.json
这里要注意CM和CDH,大版本应该要一致,比如CM为5.14,CDH也是5.14,至于如果不一致是否会出问题,比如CM为5.13,CDH为5.14,我没有试过,不知是否有同学当过小白鼠...
4.Mysql
如果你的机器能连接外网,那么这里可以暂时不用准备,下面联网安装。
如果不能连接外网,那么这里就可以先安装好MySQL(为了方便,安装在server上)。
5.数据库驱动 下载地址:
链接:https://pan.baidu.com/s/1yAS_LG88-uOInu5Ee4vzzQ 密码:1bf6
说明:注意默认的数据驱动是有版本号的,比如mysql-connector-java-xxx.jar,这里要把版本号去掉。这里提供一个我用的驱动
6.mysql-community-libs-compat-5.7.23-1.el7.x86_64.rpm 下载地址:
链接:https://pan.baidu.com/s/1PqHf3XCoAsDeEqwiDMH_5Q 密码:qgcq
说明:这是MySQL的一个组件的安装包,不是核心组件,不安装也不影响MySQL使用。但是如果缺少这个包,后面hue安装的时候很可能报错,所以先下载下来备用。
如果想找不同的版本,可以去MySQL官网找。
安装前的主机准备
一.安装JDK。(每台主机都要做)
过程:略
说明:可以不用卸载自带的openjdk,配好环境变量即可。(当然最好是卸载掉,以免出现不必要的问题或者莫名其妙的问题,我每次都是卸载掉)
二.配置主机名和hosts(每台主机都要做,并且根据各个主机情况做相应的修改)
1.执行下面命令,配置静态IP等(不同的系统中可能网络配置的文件名是不同的,但是 centos7网卡的位置一定是在这里,并且你的服务器安装有几个网卡,就会有几个网卡配置文件,我在服务器上安装时,就有三个网卡配置文件,外壳则会显示三个网线插口)
vim /etc/sysconfig/network-scripts/ifcfg-ens33
这是我的一个网卡信息,仅供参考,根据实际机器配置。主要关注BOOTPROTO,IPADDR,NETMASK,PREFIX等信息。(最好将机器的ip和掩码写死,防止机器的ip地址自己改变,在网络设置中可以修改,直接修改网卡信息这个文件也可以!)
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=cea3a5fa-ada9-4506-905f-66e93d7ed601
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.9.14
NETMASK=255.255.255.0
PREFIX=24
DNS1=8.8.8.8
GATEWAY=192.168.9.2
2.执行命令,配置主机名,根据实际情况输入主机名
vim /etc/hostname
下面是我的一个主机的hostname文件内容:
cdh1
3.执行命令,根据实际情况修改主机名
hostname cdh1
4.修改hosts文件,输入IP和主机名
vim /etc/hosts
下面是我的hosts文件,仅供参考:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.9.14 cdh1
192.168.9.15 cdh2
192.168.9.16 cdh3
5.关闭防火墙.
systemctl stop firewalld
systemctl disable firewalld
6.重启机器。然后保证主机之间互ping 主机名,互ping ip能够ping通。
三.禁止交换。(每台主机都要做)
1.执行命令
vim /etc/sysctl.conf
增加一行:
vm.swappiness=0
2.执行命令:
sudo sysctl vm.swappiness=0
四。禁用大页面.(每台主机都要做)
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
五。配置免密码登陆
0.配置免密登录是每台主机之间都要相互发送的,以三台为例,1给1,1给2,1给3,2给1,2给2,2给3,3给1,3给2,3给3。即是笛卡尔积形式。同样也就是说即使安装单机模式的cdh也需要配置ssh。
配置完成免密登录后,第一次连接时依旧会提示输入密码,这是正常的。
1.执行命令,生成秘钥:
ssh-keygen -t rsa
cd ~/.ssh
2.拷贝到要免密码登陆的机器,要免密登陆那个机器,就写该机器的ip。这里我3台机器两两之间都做了免密登陆。
ssh-copy-id xxxx
比如要免密码登录192.168.9.15,则执行: ssh-copy-id 192.168.9.15
六。配置NTP服务。标准的做法是配置NTP服务器,但是这里为了方便就用简化的方式配置了。
0.如果是一台机器,那么就是配置ntp用来同步时间,也就是把这仅有的一台服务器当成服务器,也就是没有客户端的服务器,ntp的逻辑就是,一个集群需要时间同步,如果都从网络上同步时间根据阶层的不同同样也许会有偏差,所以,在本集群中设置任意一个作为服务器,其他节点均与其同步,则可以做到严格的时间同步。
1.执行命令,修改配置。
vim /etc/ntp.conf
我修改的配置如下,注意第一行配置根据自己centos的网关来配置。
restrict 192.168.9.0 mask 255.255.255.0 nomodify notrap
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server 127.127.1.0
fudge 127.127.1.0 stratum 10
2.执行命令
vim /etc/sysconfig/ntpd
增加一行:
SYNC_HWCLOCK=yes
3.重启ntp服务
systemctl restart ntpd.service
systemctl status ntpd.service
七。安装MySQL。并配置数据库。
安装mysql的方法有很多种,mysql 的版本也有很多种,但在此最好不要用太新的版本,5.x即可。
mysql的二次安装经常会遇到很多莫名其妙的错误,所以安装要慎重。
这里采用yum的方式安装,所以要联网。也可以自行安装,只要能够安装成功,保证mysql可以使用,并且mysql服务能正常开启便可以,为了方便,把MySQL安装在主节点Server上,但是注意最好别用太高版本的MySQL。这里安装的是MySQL5.7
1.检测是否有mariadb(mariadb和旧版本mysql都要检测,两者均会影响mysql的正常安装)
rpm -qa | grep -i mariadb
如果有,就卸载
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
2.开始安装,依次执行命令,根据提示信息操作
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
3.编辑配置。
vim /etc/my.cnf
如下是我的配置,可参照修改。
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
#允许使用简单密码
validate_password=off
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
server_id = 1
expire_logs_days = 3
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
4.重启MySQL:
systemctl restart mysqld.service
5.查看默认密码,在安装过程中,会有原始密码的存放位置,可以留意观看。
grep "password" /var/log/mysqld.log
6.使用默认密码登陆:
mysql -u root -p
7.进入命令行后
首先修改密码
alter user 'root'@'localhost' identified by 'Root!!2018';
然后进行创建用户,授权等操作
grant all on *.* to 'root'@'%' identified by 'Root!!2018' with grant option; -- 授权
CREATE USER 'scm'@'%' IDENTIFIED BY 'scm'; --创建一个新用户,就使用这个用户名,和密码,后面cm的元数据库会用到
grant all on *.* to 'scm'@'%' identified by 'scm' with grant option; -- 授权
CREATE USER 'lpy'@'%' IDENTIFIED BY 'lpy'; --创建一个新用户,用户名和密码可以自定义,后面安装hive,oozie会用到
grant all on *.* to 'lpy'@'%' identified by 'lpy' with grant option; --授权
flush privileges; -- 刷新权限
8.用上面自定义的数据库用户lpy登陆,在MySQL中创建几个数据库备用,数据库名称可以自定义。
mysql -u lpy -p
create database hive;
create database hue;
create database ooz;
9.使用scm用户登录MySQL,创建scm数据库备用。
mysql -u scm -p
create database scm;
开始安装CM和CDH
0.当进行单机模式的cdh安装时,同样按照这个步骤,一步也不可以少,将仅有的一台服务器,同时当成server和agent,两个服务在一个节点上开启即可,cm也是一个集群,server和agent本来就需要有一台是同时存在的。
1.在所有节点执行命令,创建目录:
sudo mkdir /opt/cloudera-manager
2.在所有节点,将下载好的cloudera-manager-centos7-cm5.14.0_x86_64.tar.gz文件,上传到/opt目录下
3.在所有节点,解压该文件到/opt/cloudera-manager目录。
tar -zxvf /opt/cloudera-manager-centos7-cm5.14.0_x86_64.tar.gz -C /opt/cloudera-manager
4.在所有节点,创建用户,这是CM需要使用的用户
sudo useradd --system --home=/opt/cloudera-manager/cm-5.14.0/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
5.在server节点,创建CM服务本地数据存放目录,并赋予权限
sudo mkdir /var/lib/cloudera-scm-server
sudo chown cloudera-scm:cloudera-scm /var/lib/cloudera-scm-server
6.在所有的agent节点,执行命令:
vim /opt/cloudera-manager/cm-5.14.0/etc/cloudera-scm-agent/config.ini
修改server_host为server节点的主机名,我的就是server_host=cdh1
7.在所有节点,将上面准备好的数据库驱动上传到/usr/share/java目录下
8.在server节点上执行命令。初始化数据库scm。mysql scm scm scm分别代表:数据库类型 database名称 数据库用户名 数据库密码
/opt/cloudera-manager/cm-5.14.0/share/cmf/schema/scm_prepare_database.sh mysql scm scm scm
注意:这条命令要执行成功,需要server和MySQL在一个节点上。如果不在一个节点上,需要使用-hmysqlserver命令指定MySQL主机位置,比如如果MySQL安装机器IP为192.168.9.20,那么执行命令为
/opt/cloudera-manager/cm-5.14.0/share/cmf/schema/scm_prepare_database.sh -h 192.168.9.20 mysql scm scm scm
如果出现如下提示,则证明CM元数据创建成功。
All done, your SCM database is configured correctly!
9.在主节点执行,创建CDH文件存放目录。
mkdir /opt/cloudera/
cd /opt/cloudera
mkdir parcel-repo
10.将上面准备好的CDH的3个文件,上传至/opt/cloudera/parcel-repo路径下。
CDH-5.14.0-1.cdh5.14.0.p0.24-el7.parcel.sha1 一定要注意将后缀的“1”删掉,manifest.jsonwen文件其实就是安装的命令总结,一定要上传,不是无关紧要的文件,正相反,很重要。无法下载,一点击就打开的情况下,可以粘贴复制然后将.txt文件修改成.json文件就可以。
11.在server节点,启动CM server
/opt/cloudera-manager/cm-5.14.0/etc/init.d/cloudera-scm-server start
12.在agent节点,启动CM agent
/opt/cloudera-manager/cm-5.14.0/etc/init.d/cloudera-scm-agent start
13.稍等一会,访问地址:serverip:7180,出现界面如下,用户名密码都是admin。接下来就是一步一步的配置。
部分WEB配置摘录及问题解决
1.选择免费版:
2.点击当前管理的主机,这些就是启动了agent服务的主机,看看是否和自己预想的一样。所以说一台服务器同样也要启动agent。 如果显示不出来的话,直接写上ip进行搜索。
3.勾选主机
4.安装parcel包,这里一定要注意选择自己下载的CDH包的版本,如果选错了,那就要走网络下载,然后就等到明年吧...
5.然后就是的分发parcel包,解压激活了,等待自动完成。
6.主机检查,没有什么问题
7.安装服务。资源太少,只安装核心的Hadoop
8.根据实际情况分配角色
9.前面MySQL安装的时候,创建了一个自定义用户lpy,和几个数据库,现在用上了
这里为什么出错了呢?
通过查看日志:tail -f 300 /opt/cloudera-manager/cm-5.14.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
安装好后,再一次测试连接,已经通过:
如果是自己安装的mysql,跟博主不一样的话,实在是找不到已安装mysql对应版本的community-libs-compat文件,其实不安装也可以,放弃安装Hue就可以,如果只是使用hadoop和hive的话,是不影响使用的。当然如果不能放弃的话,便只能重新安装mysql了,卸载mysql时,记得一定要先把mysql服务给关闭掉,这样重新安装时遇到的错误可能会少一点。
10.审核更改,默认124,改小一点吧,其他的 默认就好
11.启动成功
12.集群主页
可以看到有很多错误信息,但是都是一些内存不足,磁盘不足的错误信息。原因就是因为资源太少,如果资源充足,是不会有这些错误的。OK,打完收工。
更多推荐
所有评论(0)