CDH 部署主要有以下几个部分:(以cdh5.1.3为例,系统环境为centos 6.5)
测试环境建议以root用户建立,可以减少一些权限的设置
1 设置集群环境,比如安装jdk,在作为master机器上安装mysql,并修改密码,允许外部网络访问,建立需要使用的一些软件的数据存放的数据库,比如hive,snoop等等。
2 解压Cloudera Manager 到 /opt/目录 ,解压后会得到两个文件夹,一个是cloudera(里面的parcel-repo 一般用来放置安装的软件)
另一个就是cm-5.1.3 (Cloudera Manager的程序目录),该目录下的/opt/cm-5.1.3/share/cmf/lib 用来放一些驱动包,后面用到的mysql的jdbc的驱动就要放到这里
3 Cloudera Manager解压完后,就要把需要的软件放到parcel-repo目录下,一般情况都是用parcel文件如CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel。除了该软件外,还需要用xxxx.parecel.sha 就是对前面的parcel包给一个哈希秘钥,用于界面对整个进行检查,
可以用下面的命令生成:
sha1sum CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel | awk '{ print $1 }' > CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel.sha
4 进入界面,地址为主机名:7180如http://192.168.2.6:7180,然后就可以进入登录页面,默认用户名和密码都是admin,接下来就是按照引导一步一步的安装啦。
安装的具体流程:
1 在所在的服务器上,如果有多台,每台都要安装jdk-8u181-linux-x64.rpm 文件,
以及安装scala-2.12.6.rpm
2安装java后,如果是rpm安装无需设置环境变量。对多台服务器进行如下更改:
更改机器的hostname,此处分别改为cdh1,cdh2,cdh3:
sudo vim /etc/sysconfig/network 然后把hostname改为 cdh1
修改hosts文件,把各个机器的ip 和hostname 添加进去,每台机器都要改
sudo vim /etc/hosts 然后添加如下内容,如:
192.168.2.6 cdh1
192.168.2.7 cdh2
192.168.2.8 cdh3
重启networkfuwu
sudo service network restart
2)关闭每台机器的防火墙服务:
sudo service iptables stop
sudo service ip6tables stop
sudo service iptables status ----查看ipv4状态看是否已经成功关闭
sudo service ip6tables status ---查看ipv6状态看是否已经成功关闭
关闭开机启动
chkconfig iptables off
chkconfig ip6tables off
然后还要对selinux/config文件进行编辑,
vim /etc/selinux/config
将里面的值改为这样 SELINUX=disabled
3) 修改各台机器最大连接数和打开数
1进入/etc/security
2编辑limits.conf
* soft nofile 204800
* hard nofile 204800
* soft nproc 204800
* hard nproc 204800
3、进入/etc/security/limits.d文件夹并修改文件 90-nproc.conf 将文件里面的数字改为 204800
如:
* soft nproc 204800
4 执行sysctl -p 使配置生效
5、重启即可生效,或者使用ulimit -n 204800临时生效(先可以不重启,待配置服务器之间免密登录后再重启)
4) 各台机器之间免密登录(建议建立root用户之间免密登录)
1 分别在各台机器上执行,
ssh-keygen -t rsa
然后一直点击yes,然后进入生成密匙的文件夹,如/home/cattsoft/.ssh 或者/root/.ssh
进入后再执行:
cat id_rsa.pub>> authorized_keys
然后ssh 一下本机的主机名 ,如果能ssh成功则说明添加成功
2 ssh本机成功后,需要将各台机器连接起来,也需要在各台机器上执行一下命令
ssh-copy-id -i 主机名(指需要和当前机器免密登录的主机名)
比如有三台机器 slave1 slave2 slave3
当前机器为 slave1 如果想和其他两台免密登录则需要分别执行
ssh-copy-id -i slave2
ssh-copy-id -i slave3
换成是slave2 也要再次执行一遍类似的操作即,每次都要和除当前机器以外的需要连接的机器进行建立连接。
通过ssh 其他机器可以知道有没有成功 ,注意:各台机器的用户名要相同,不然会连接出错
最后将master 主机 ssh所有主机后的knowhost 复制到其他各台主机的生成密匙的文件夹,如/home/cattsoft/.ssh 或者/root/.ssh内。
(注意:如果ssh的时候出现以下提示:
Agent admitted failure to sign using the key
解決方法:
使用 ssh-add 指令將私钥加进来(根据个人的密匙命名不同更改 id_rsa)
# ssh-add ~/.ssh/id_rsa)
5)配置NTP时间同步服务
(提示:这一步暂时可以跳过,但是在集群启动以后,会提示时间不同步。集群中所有主机必须保持时间同步,如果时间相差较大会引起各种问题。)
集群中所有主机必须保持时间同步,如果时间相差较大会引起各种问题。具体思路如下:
master节点作为ntp服务器与外界对时中心同步时间,随后对所有datanode节点提供时间同步服务。
所有datanode节点以master节点为基础同步时间。
所有节点安装相关组件:
1. yum install ntp
完成后,配置开机启动:
chkconfig ntpd on
,检查是否设置成功:
chkconfig --list ntpd
其中2-5为on状态就代表成功。
主节点配置
在配置之前,先使用ntpdate手动同步一下时间,免得本机与对时中心时间差距太大,使得ntpd不能正常同步。这里选用65.55.56.206作为对时中心,
ntpdate -u 65.55.56.206
ntp服务只有一个配置文件,配置好了就OK。 这里只给出有用的配置,不需要的配置都用#注掉,这里就不在给出:
1. driftfile /var/lib/ntp/drift
2. restrict 127.0.0.1
3. restrict -6 ::1
4. restrict default nomodify notrap
5. server 65.55.56.206 prefer
6. includefile /etc/ntp/crypto/pw
7. keys /etc/ntp/keys
配置文件完成,保存退出,启动服务,执行如下命令:
service ntpd start
检查是否成功,用ntpstat命令查看同步状态,出现以下状态代表启动成功:
1. synchronised to NTP server () at stratum 2
2. time correct to within 74 ms
3. polling server every 128 s
如果出现异常请等待几分钟,一般等待5-10分钟才能同步。
配置ntp客户端(所有datanode节点)
1. driftfile /var/lib/ntp/drift
2. restrict 127.0.0.1
3. restrict -6 ::1
4. restrict default kod nomodify notrap nopeer noquery
5. restrict -6 default kod nomodify notrap nopeer noquery
6. #这里是主节点的主机名或者ip
7. server n1
8. includefile /etc/ntp/crypto/pw
9. keys /etc/ntp/keys
ok保存退出,请求服务器前,请先使用ntpdate手动同步一下时间:ntpdate -u n1 (主节点ntp服务器)
这里可能出现同步失败的情况,请不要着急,一般是本地的ntp服务器还没有正常启动,一般需要等待5-10分钟才可以正常同步。启动服务:
service ntpd start
6) 设置swap空间
(Cloudera建议将交换空间设置为0,过多的交换空间会引起GC耗时的激增,所以还是关闭的为好。)
所有机器执行
sudo echo "vm.swappiness = 0" >> /etc/sysctl.conf
7) 关闭大页面压缩
所有机器执行:
sudo echo never > /sys/kernel/mm/transparent_hugepage/enabled
sudo echo never > /sys/kernel/mm/transparent_hugepage/defrag
3 安装mysql 并进行配置
下载 msyql 的rpm包,mysql-5.7.25-1.el6.x86_64.rpm-bundle.tar
一、mysql-5.7.25-1.el6.x86_64.rpm-bundle.tar解压后有如下7个文件:
mysql-community-client-5.7.25-1.el6.x86_64.rpm
mysql-community-common-5.7.25-1.el6.x86_64.rpm
mysql-community-devel-5.7.25-1.el6.x86_64.rpm
mysql-community-libs-5.7.25-1.el6.x86_64.rpm
mysql-community-libs-compat-5.7.25-1.el6.x86_64.rpm
mysql-community-server-5.7.25-1.el6.x86_64.rpm
mysql-community-test-5.7.25-1.el6.x86_64.rpm
二、安装顺序为:(建议装之前先把之前的mysql相关包全部卸载,rpm -e --nodeps <包名>即可)
先检查是否安装有mysql的包,如果有要先删除才可以安装,
rpm -qa | grep -i mysql
删除所有安装的mysql包
sudo yum -y remove mysql-libs*
或者删除指定安装包
rpm -e --nodeps mysql-libs-5.1.73-8.0.1.el6_8.x86_64
然后执行以下安装步骤
1 sudo rpm -ivh mysql-community-common-5.7.25-1.el6.x86_64.rpm
2 sudo rpm -ivh mysql-community-libs-5.7.25-1.el6.x86_64.rpm
3 sudo rpm -ivh mysql-community-libs-compat-5.7.25-1.el6.x86_64.rpm
4 sudo rpm -ivh mysql-community-client-5.7.25-1.el6.x86_64.rpm
5 sudo rpm -ivh mysql-community-server-5.7.25-1.el6.x86_64.rpm
6 sudo rpm -ivh mysql-community-devel-5.7.25-1.el6.x86_64.rpm (需要openssl)
配置MYSQL
在配置文件中增加以下配置并保存:vim /etc/my.cnf
default-storage-engine = innodb
innodb_file_per_table
collation-server = utf8_general_ci
init-connect = 'SET NAMES utf8'
character-set-server = utf8
修改初始密码
1、修改 /etc/my.cnf,在 最后一行添加:skip-grant-tables=1(这一行配置让 mysqld 启动时不对密码进行验证)
2、重启 mysqld 服务:service mysqld restart
3、使用 root 用户登录到 mysql:mysql -u root
4、切换到mysql数据库,更新 user 表:(将密码更改为cattsoft)
update user set authentication_string = password('cattsoft'), password_expired = 'N', password_last_changed = now() where user = 'root';
在之前的版本中,密码字段的字段名是 password,5.7版本改为了 authentication_string
5、退出 mysql,编辑 /etc/my.cnf 文件,删除 skip-grant-tables=1 的内容
6、重启 mysqld 服务,再用新密码登录即可
开启外部访问:(密码为cattsoft,需要先选中mysql库)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'cattsoft' WITH GRANT OPTION;
flush privileges;
如果外部还是不可以访问,则进入mysql执行:
update mysql.user set Grant_priv='Y',Super_priv='Y' where user = 'root' and host = '%';
flush privileges;
如果说密码不符合规定的解决办法:
1、查看 mysql 初始的密码策略,
输入语句 “ SHOW VARIABLES LIKE 'validate_password%'; ” 进行查看,
2、首先需要设置密码的验证强度等级,设置 validate_password_policy 的全局参数为 LOW 即可,
输入设值语句 “ set global validate_password_policy=LOW; ” 进行设值,
3、当前密码长度为 8 ,如果不介意的话就不用修改了,按照通用的来讲,设置为 6 位的密码,设置 validate_password_length 的全局参数为 6 即可,
输入设值语句 “ set global validate_password_length=6; ” 进行设值,
4、现在可以为 mysql 设置简单密码了,只要满足六位的长度即可,
输入修改语句 “ ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; ” 可以看到修改成功,表示密码策略修改成功了!!!
创建CM用的数据库:
--hive数据库
create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci ;
--集群监控数据库
create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci ;
--hue数据库
create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
-- oozie数据库
create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
4 将cloudera-manager /opt目录,并进行解压,解压得到两个文件夹
Cloudera Manager解压完后,就要把需要的软件(cdhxxx.parcel,cdhxxx.parcel.sha1, manifest.json三个文件)放到parcel-repo目录下,一般情况都是用parcel文件如CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel。除了该软件外,还需要用xxxx.parecel.sha 就是对前面的parcel包给一个哈希秘钥,用于界面对整个进行检查,
可以用下面的命令生成:
sha1sum CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel | awk '{ print $1 }' > CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel.sha
在所有节点创建cloudera-scm用户:
useradd --system --home=/opt/cm-5.1.3/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
然后对用户和文件赋予权限:
sudo chown -R cloudera-scm:cloudera-scm / opt / cloudera / parcel-repo / *
这个是增加了一个cloudera-scm 用户
如果是使用当前用户使用,则也要为当前用户赋予文件的权限,如
sudo chown -R hadoop:hadoop opt / cloudera /opt/cm-5.1.3
初始脚本配置数据库
执行命令如下(建议以root用户执行):
/opt/cm-5.1.3/share/cmf/schema/scm_prepare_database.sh mysql cm -hcdh1 -uroot -pcattsoft --scm-host cdh1 scm scm scm
如果说数据库已经存在,则需要删除。
说明:这个脚本就是用来创建和配置CMS需要的数据库的脚本。各参数是指:
mysql:数据库用的是mysql,如果安装过程中用的oracle,那么该参数就应该改为oracle。
-hcdh1:数据库建立在cdh1主机上面。也就是主节点上面。
-uroot:root身份运行mysql。-cattsoft:mysql的root密码是cattsoft。
--scm-host master:CMS的主机,一般是和mysql安装的主机是在同一个主机上。
最后三个参数是:数据库名,数据库用户名,数据库密码
Agent配置(所有机器都要更改)
修改/opt/cm-5.1.3/etc/cloudera-scm-agent/config.ini中的server_host为主节点的主机名,以便服务启动。
5 启动服务并在页面配置
主机启动只要在一台机上启动就可以,服务端启动要在每台机器上都启动
主机服务启动
/opt/cm-5.1.3/etc/init.d/cloudera-scm-server start
主机服务停止
/opt/cm-5.1.3/etc/init.d/cloudera-scm-server stop
服务端启动
/opt/cm-5.1.3/etc/init.d/cloudera-scm-agent start
服务端停止
/opt/cm-5.1.3/etc/init.d/cloudera-scm-agent stop
按照如下地址进入 http://192.168.2.6:7180 即 master所在主机名:7180
进入后需要输入用户名和密码:用户名和密码均为admin
然后选择服务,选择免费那个就可以,然后进入可以看到
如果出现我们上传的cdh文件,就说明没有问题,然后选择更多选项,把
远程的url都点减号,最后留下本地parcel存储库路径有填值
然后点继续就可以了,后面根据需要进行界面部署。
/opt/cm-5.1.3/etc/init.d/cloudera-scm-server stop
在选择安装版本后,如果在分配过程中出错,或者一直循环分配,此时,需要mysql数据库删除cm数据库,并重新初始化配置数据库,执行命令:
先停止服务,再初始化
主节点执行: /opt/cm-5.1.3/etc/init.d/cloudera-scm-server stop
主节点和分节点执行: /opt/cm-5.1.3/etc/init.d/cloudera-scm-agent stop
/opt/cm-5.1.3/share/cmf/schema/scm_prepare_database.sh mysql cm -hcdh1 -uroot -pcattsoft --scm-host cdh1 scm scm scm
然后再启动服务
主节点执行:/opt/cm-5.1.3/etc/init.d/cloudera-scm-server start
主节点和分节点执行:/opt/cm-5.1.3/etc/init.d/cloudera-scm-agent start
————————————————
版权声明:本文为CSDN博主「时空守望者」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/baidu_41706985/article/details/89945054