• 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

  • 相关阅读:
    Windows10远程桌面连接提示:出现身份验证错误,要求的函数不受支持
    mybatis 中 if-test 判断大坑
    hutool的DateUtil工具类
    SpringBoot启动过程
    数据库事务的隔离级别
    EasyUI管理后台模板(附源码)
    springmvc中自定义拦截器以及拦截器的执行过程
    文件上传(MultipartFile)
    文件下载(使用springmvc框架中ResponseEntity对象)
    json格式实现数据传输
  • 原文地址:https://www.cnblogs.com/javalinux/p/14849471.html
Copyright © 2020-2023  润新知