CDH环境搭建及部署

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

原文地址:https://www.cnblogs.com/javalinux/p/14849471.html