本文参考内容:https://blog.csdn.net/u010936936/article/details/81939880
一环境:
centos 7 64位
二软件下载:
JDK1.8: 下载地址 选择64位linux
Cloudera Manager:下载地址这里我选择的是[cloudera-manager-centos7-cm5.14.0_x86_64.tar.gz]
CDH :下载地址
和上面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
一.基础配置
- 配置网络:采用Nat方式联网。
- vim /etc/sysconfig/network-scripts/ifcfg-ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.80.3
NETMASK=255.255.255.0
GATEWAY=192.168.80.2
DNS1=202.196.32.1 - 开启网卡:ifup ens33
- 测试:ping www.baidu.com
- 修改yum源:
1)mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
访问:https://mirrors.ustc.edu.cn/help/centos.html
把对应版本的内容粘贴进去。
2)vi /etc/yum.repos.d/CentOS-Base.repo
3)yum makecache(用时较长)
3). yum install wget
4). yum install vim
5). yum install openssh-clients
二. 配置JDK
先输入 java -version 查看是否存在java 如果显示open java 说明自带了open java ,我们可以选择删除或者覆盖,网络上有很多删除open java的方法,这里我讲述一下覆盖的方法。
无论是否有java 都进行以下操作:
-
cd /usr
-
mkdir java
-
rz (将JDK包传到该目录下)
-
tar -zxvf jdk(按tab键自动补全)
-
vim /etc/profile
最后添加环境变量:export JAVA_HOME=/usr/java/jdk1.8.0_181 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
-
执行命令 source /etc/profile
-
执行命令 java -version
出现 java version “1.8.0_181”
Java™ SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot™ 64-Bit Server VM (build 25.181-b13, mixed mode)
如果你出现这个请继续进行下一步,如果还显示open java 请执行如下命令。
- update-alternatives --display java
(linux中提供了update-alternatives命令,update-alternatives是linux系统(大部分linux系统都支持此命令)中专门维护系统命令链接符的工具,通过它可以很方便的设置系统默认使用哪个命令、哪个软件版本,而所有的这些就构成了备选方案系统(alternatives
system)。很多时候我们会将拥有相同或相似功能的不同应用程序安装在同一个操作系统上,例如同一个操作系统上的不同文本编辑器。这给了这个系统的用户在编辑文本时有了更多的选择,如果用户愿意他们可以自由选择任意一个来使用。
其实update-alternatives命令的功能很好理解,举个例子:在Window系统中,如果我们安装多个浏览器,比如有火狐、有IE、有360、有Chrome等,当我们从某个链接进去打开网页时,可能会问你使用哪个浏览器,当你选择某个浏览器时,此浏览器会问你是否把它作为默认浏览器,如果你选择了是,那下次点开某个链接时,就直接使用默认浏览器打开了!
输出内容
update-alternatives --display java,输出如下(后面有省略):
java - status is manual.
link currently points to /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
/usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java - priority 170131
slave keytool: /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/keytool
slave orbd: /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/orbd
......
可以从输出中看到系统中java默认使用的OpenJDK,其中数字170131表示优先级。
- 把自己安装的SunJDK加入到备选系统中
运行命令(注意命令最后的数字表示优先级,其中170130 为SunJDK的alternative的优先级)
update-alternatives --install /usr/bin/java java /${JAVA_HOME}/bin/java 170130
- 选择自己安装的SunJDK作为首选java命令
运行命令
update-alternatives --config java,输出如下
There are 2 programs which provide 'java'.
Selection Command
-----------------------------------------------
*+ 1 /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
2 /usr/java/bin/java
Enter to keep the current selection[+], or type selection number:
config命令是交互式的命令,可以根据提示进行选择,此处我们选择2,即使用安装的SunJDK的java命令,然后按回车键。
现在再查看java -version会发现java已经改变。
三.克隆
在关机状态下克隆,并配置网络
(克隆机器)
- vim /etc/sysconfig/network-scripts/ifcfg-ens33
将UUID删除,修改IP地址,加入mac地址HWADDR=(为真的mac地址) - vim /etc/hostname(修改主机名,每台主机都要做)
注意这里需要重启才可以使hostname修改,但如果是服务器等不方便重启的设备,输入
hostname $(cat /etc/hostname)
-
vim /etc/hosts(修改hosts文件,主机修改就行,下面是我的内容)
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.80.11 cdh1
192.168.80.12 cdh2 -
scp /etc/hosts root@cdh2:/etc/(将修改后的hosts文件传到另外一台机器上)
传送过程需要输入密码 -
(关闭防火墙)systemctl stop firewalld
systemctl disable firewalld -
重启机器。然后保证主机之间互ping 主机名,互ping ip能够ping通
四.禁止交换。(每台主机都要做)
- 执行命令vim /etc/sysctl.conf
增加一行:vm.swappiness=0 - 执行命令:sudo sysctl vm.swappiness=0
五.禁用大页面.(每台主机都要做)
- 执行命令:
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled - 执行命令,修改配置:
vim /etc/rc.local
增加两行:
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled - 执行命令,赋予权限
chmod +x /etc/rc.d/rc.local
六.配置免密码登陆(每台主机都要做)
- 执行命令,生成秘钥:
ssh-keygen -t rsa
cd ~/.ssh - 拷贝到要免密码登陆的机器,要免密登陆哪个机器,就写该机器的ip。这里我2台机器两两之间都做了免密登陆。
ssh-copy-id xxxx
比如要免密码登录192.168.80.12(cdh2),则在cdh1上执行: ssh-copy-id 192.168.80.12
七.ntp服务配置
这里我提供了两种配置ntp服务的方法,本地服务器法与ntp服务器法。本步骤可以跳过但在后面cm上可能会报网络问题,其实是ntp的问题所以这里尽量配置。
如果在本机上运行,可以直接使用本地ntp服务。
所有节点都执行
- 下载ntp服务
yum –y install ntp
执行命令,修改配置。
vim /etc/ntp.conf
我修改的配置如下,注意第一行配置根据自己centos的网关来配置。
restrict 192.168.80.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
- 执行命令
vim /etc/sysconfig/ntpd
增加一行:
SYNC_HWCLOCK=yes - 重启ntp服务
systemctl restart ntpd.service
systemctl status ntpd.service
如果在服务器上使用请配置
- 在所有机器上下载ntp服务
yum –y install ntp - 执行命令,修改配置。
请在服务机上修改配置文件。
vim /etc/ntp.conf
# Permit all access over the loopback interface. This could
# be tightened as well, but to do so would effect some of
# the administrative functions.
restrict 127.0.0.1
restrict -6 ::1
restrict 192.168.80.0 mask 255.255.255.0 #允许 192.168.80.0网段中的服务器访问本ntp服务器进行时间同步
restrict 10.0.0.16 #允许单个IP地址访问本ntp服务器
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 210.72.145.44 #指定本ntp服务器的上游ntp服务器为210.72.145.44,并且设置为首先服务器。同步时间为:从上到下,写的越靠上,优先级越高。(此服务器同步不了时间,寻找下一个ntp服务器)。此IP地址是中国国家授时中心ntp服务器。
server 133.100.11.8 #当上面服务器同步不了,则寻找第二个。此IP地址是日本福冈大学ntp服务器。
restrict 210.72.145.44 nomodify notrap noquery #允许上层时间服务器主动修改本机时间
restrict 133.100.11.8 nomodify notrap noquery
server 127.127.1.0 #local clock 如果上面的服务器都无法同步时间,就和本地系统时间同步。127.127.1.0在这里是一个IP地址,不是网段。
fudge 127.127.1.0 stratum 10 #127.127.1.0 为第10层。ntp 和127.127.1.0同步完后,就变成了11层。 ntp是层次阶级的。同步上层服务器的stratum 大小不能超过或等于16。
保存退出
注意:
server 210.72.145.44 #指定本ntp服务器的上游ntp服务器为210.72.145.44,并且设置为首先服务器。同步时间为:从上到下,写的越靠上,优先级越高。(此服务器同步不了时间,寻找下一个ntp服务器)。此IP地址是中国国家授时中心ntp服务器。
server 133.100.11.8 #当上面服务器同步不了,则寻找第二个。此IP地址是日本福冈大学ntp服务器。
这两句是设置ntp服务器的。但由于时间,网络等原因,这两个可能不能使用。请在使用前ping 这两个ip ,查看网络连通性与时间延时。这里提供一些常用的ntp服务器,请选择合适的。
s1a.time.edu.cn 北京邮电大学
s1b.time.edu.cn 清华大学
s1c.time.edu.cn 北京大学
ntp1.aliyun.com 阿里云
在客户解上配置
vim /etc/ntp.conf
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 192.1968.80.3 #新增行1:你服务端IP地址
- 启动ntp服务
systemctl start ntpd
查看ntpd服务状态
指令“ntpq -p”可以列出目前我们的NTP与相关的上层NTP的状态,以上的几个字段的意义如下:
remote:即remote - 本机和上层ntp的ip或主机名,“+”表示优先,“*”表示次优先。
refid:参考的上一层NTP主机的地址
st:即stratum阶层
poll:下次更新在几秒之后
offset:时间补偿的结果
[root@linl_S ~]# ntpq -p #列出本NTP服务器与上游服务器的连接状态
remote refid st t when poll reach delay offset jitter
==============================================================================
210.72.145.44 .INIT. 16 u - 64 0 0.000 0.000 0.000
133.100.11.8 .INIT. 16 u - 64 0 0.000 0.000 0.000
*dns1.synet.edu. 202.118.1.47 2 u 32 64 3 60.058 7.261 6.860
news.neu.edu.cn .INIT. 16 u - 64 0 0.000 0.000 0.000
202.118.1.130 .INIT. 16 u - 64 0 0.000 0.000 0.000
42.96.167.209 .INIT. 16 u - 64 0 0.000 0.000 0.000
LOCAL(0) .LOCL. 10 l 96 64 2 0.000 0.000 0.000
[root@linl_S ~]# ntpstat #列出是否与上游服务器连接。需要过5分钟
synchronised to NTP server (202.112.29.82) at stratum 3 #可以看到我们当前在3层
time correct to within 257 ms #ms 毫秒是一种较为微小的时间单位,是一秒的千分之一。
polling server every 64 s
-
常见错误:如下所示。
其实,这不是一个错误。而是由于每次重启NTP服务器之后大约要3-5分钟客户端才能与server建立正常的通讯连接。当此时用客户端连接服务端就会报这样的信息。一般等待几分钟就可以了。1 [root@linl_C ~]# ntpdate cm1
2 23 May 11:38:02 ntpdate[6694]: no server suitable for synchronization found
八.安装MySQL。并配置数据库
为了方便,把MySQL安装在主节点Server上,但是注意最好别用太高版本的MySQL。这里安装的是MySQL5.7
- 检测是否有mariadb
rpm -qa | grep mariadb
如果有,就卸载
rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.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
如果下载速度过慢这里有一些办法。
查看mysql依赖关系rpm包 依赖关系为
common→libs→client→server
进入清华大学开源镜像网站:网站
选择需要的版本,这里选择:5.7.26
下载:全部的依赖包
mysql-community-common-5.7.26-1.el7.x86_64.rpm
mysql-community-libs-5.7.26-1.el7.x86_64.rpm
mysql-community-client-5.7.26-1.el7.x86_64.rpm
mysql-community-server-5.7.26-1.el7.x86_64.rpm
并输入以下命令安装
rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm
这里完成了安装mysql ,但在cm安装时会发生错误:
通过查看日志: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
解决办法:
下载mysql-community-libs-compat-5.7.26-1.el7.x86_64.rpm
其他版本请自行再 这里查找下载
rpm -ivh mysql-community-libs-compat-5.7.26-1.el7.x86_64.rpm
-
MySql取消密码强度验证功能
修改MySql配置文件(my.cnf)
一般情况下,MySql的配置文件 my.cnf 会在 /etc/ 目录下,如果没有,可以使用以下命令查找位置:
find / -name my.cnf
编辑配置文件:
vim /etc/my.cnf
在文件末尾添加以下内容:
plugin-load=validate_password.so
validate-password=OFF
保存退出 -
开启MySQL:
systemctl start mysqld.service -
查看默认密码
grep “password” /var/log/mysqld.log -
使用默认密码登陆:
mysql -u root -p -
进入命令行后,首先修改密码
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 ‘Root!!2018’;–创建一个新用户,就使用这个用户名,和密码,后面cm的元数据库会用到
grant all on . to ‘scm’@’%’ identified by ‘Root!!2018’ with grant option;-- 授权
CREATE USER ‘lpy’@’%’ IDENTIFIED BY ‘Root!!2018’; --创建一个新用户,用户名和密码可以自定义,后面安装hive,oozie会用到
grant all on . to ‘lpy’@’%’ identified by ‘Root!!2018’ with grant option;–授权
flush privileges; – 刷新权限 -
用上面自定义的数据库用户lpy登陆,在MySQL中创建几个数据库备用,数据库名称可以自定义。
mysql -u lpy -p
create database hive;
create database hue;
create database ooz; -
使用scm用户登录MySQL,创建scm数据库备用。
mysql -u scm -p
create database scm;
九.开始安装CM和CDH
-
在所有节点执行命令,创建目录:
sudo mkdir /opt/cloudera-manager -
在所有节点,将下载好的cloudera-manager-centos7-cm5.14.0_x86_64.tar.gz文件,上传到/opt目录下(用rz命令)
-
在所有节点,解压该文件到/opt/cloudera-manager目录。
tar -zxvf /opt/cloudera-manager-centos7-cm5.14.0_x86_64.tar.gz -C /opt/cloudera-manager
qkw;dkw4. w在所有节点,创建用户,这是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 -
在主节点,创建CM服务本地数据存放目录,并赋予权限
sudo mkdir /var/lib/cloudera-scm-server
sudo chown cloudera-scm:cloudera-scm /var/lib/cloudera-scm-server -
在所有节点,执行命令:
vim /opt/cloudera-manager/cm-5.14.0/etc/cloudera-scm-agent/config.ini
修改server_host为server节点的主机名,我的就是server_host=cdh1 -
在所有节点,将上面准备好的数据库驱动上传到/usr/share/java目录下
-
在主节点上执行命令。初始化数据库scm。mysql scm scm scm分别代表:数据库类型 database名称 数据库用户名 数据库密码
/opt/cloudera-manager/cm-5.14.0/share/cmf/schema/scm_prepare_database.sh mysql scm scm Root!!2018
如果出现如下提示,则证明CM元数据创建成功。
All done, your SCM database is configured correctly! -
在主节点执行,创建CDH文件存放目录。
mkdir /opt/cloudera/
cd /opt/cloudera
mkdir parcel-repo -
将上面准备好的CDH的3个文件,上传至/opt/cloudera/parcel-repo路径下。
-
在主节点,启动CM server
/opt/cloudera-manager/cm-5.14.0/etc/init.d/cloudera-scm-server start -
在所有节点,启动CM agent
/opt/cloudera-manager/cm-5.14.0/etc/init.d/cloudera-scm-agent start -
稍等一会,访问地址:serverip:7180
例如:192.168.80.11:7180
十.CM的web配置问题
- 访问web页面,如192.168.80.11:7180
出现如下界面:
输入账号admin密码admin
登陆
选择 免费版。
选择主机
.安装parcel包,这里一定要注意选择自己下载的CDH包的版本,如果选错了,那就要走网络下载
5.然后就是的分发parcel包,解压激活了,等待自动完成。
6.主机检查
可以直接下一步