Hadoop构建数据仓库实践
上QQ阅读APP看书,第一时间看更新

4.4 离线安装CDH及其所需的服务

在后面的数据仓库实践中会用到Sqoop、Hive、Oozie、Impala、Hue等工具,出于简单部署的原则,这里选择CDH 5.7.0,并启用相关服务。

4.4.1 CDH安装概述

CDH的全称是Cloudera's Distribution Including Apache Hadoop,是Cloudera公司的Hadoop发行版本。有三种方式安装CDH:

● Path A:通过Cloudera Manager自动安装。

● Path B:使用Cloudera Manager Parcels或Packages安装。

● Path C:使用Cloudera Manager Tarballs手工安装。

不同方式的安装步骤总结如表4-1所示。

表4-1 CDH的三种安装方式

(续表)

4.4.2 安装环境

硬件配置:每台主机CPU4核、内存8GB、硬盘100GB。IP与主机名如下:

● 172.16.1.101 cdh1

● 172.16.1.102 cdh2

● 172.16.1.103 cdh3

● 172.16.1.104 cdh4

各软件版本如表4-2所示。

表4-2 安装CDH所需软件的版本

4.4.3 安装配置

1.安装前准备(都是使用root用户在集群中的所有4台主机配置)

● 从以下地址下载所需要的安装文件

    http://archive.cloudera.com/cm5/cm/5/cloudera-manager-el6-cm5.7.0_x86_64.tar.gz
    http://archive.cloudera.com/cdh5/parcels/5.7/CDH-5.7.0-1.cdh5.7.0.p0.45-el6.parcel
    http://archive.cloudera.com/cdh5/parcels/5.7/CDH-5.7.0-1.cdh5.7.0.p0.45-el6.parcel.sha1
    http://archive.cloudera.com/cdh5/parcels/5.7/manifest.json

● 使用下面的命令检查OS依赖包,xxxx换成包名

    rpm -qa | grep xxxx

以下这些包必须安装:

    chkconfig
    python (2.6 required for CDH 5)
    bind-utils
    psmisc
    libxslt
    zlib
    sqlite
    cyrus-sasl-plain
    cyrus-sasl-gssapi
    fuse
    portmap (rpcbind)
    fuse-libs
    redhat-lsb

● 配置域名解析

    vi /etc/hosts

添加如下4行内容:

    172.16.1.101 cdh1
    172.16.1.102 cdh2
    172.16.1.103 cdh3
    172.16.1.104 cdh4

● 安装JDK

CDH5推荐的JDK版本是1.7.0_67、1.7.0_75、1.7.0_80,这里安装1.7.0_80。注意:所有主机要安装相同版本的JDK;安装目录为/usr/java/jdk-version。

    mkdir /usr/java/
    mv jdk-7u80-linux-x64.tar.gz /usr/java/
    cd /usr/java/
    tar -zxvf jdk-7u80-linux-x64.tar.gz
    chown -R root:root jdk1.7.0_80/
    vi /etc/profile.d/java.sh

添加如下3行内容:

    export JAVA_HOME=/usr/java/jdk1.7.0_80
    export CLASSPATH=.:$JAVA_HOME/jre/lib/*:$JAVA_HOME/lib/*
    export PATH=$PATH:$JAVA_HOME/bin

使环境变量生效:

    source /etc/profile.d/java.sh

● 安装、配置并启动NTP服务

    yum install ntp
    chkconfig ntpd on
    ntpdate -u 202.112.29.82
    vi /etc/ntp.conf

添加如下8行内容:

    driftfile /var/lib/ntp/drift
    restrict default kod nomodify notrap nopeer noquery
    restrict -6 default kod nomodify notrap nopeer noquery
    restrict 127.0.0.1
    restrict -6 ::1
    server 202.112.29.82
    includefile /etc/ntp/crypto/pw
    keys /etc/ntp/keys

启动NTP服务:

    service ntpd start

● 建立CM用户

    useradd --system --home=/opt/cm-5.7.0/run/cloudera-scm-server --no-create-home --
    shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
    usermod -a -G root cloudera-scm
    echo USER=\"cloudera-scm\" >> /etc/default/cloudera-scm-agent
    echo "Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin" >> /etc/sudoers

● 安装配置MySQL数据库(为了后面配置方便,这里每个主机都装了)

    rpm -ivh MySQL-5.6.14-1.el6.x86_64.rpm
    vi /etc/profile.d/mysql.sh

添加如下2行内容:

    export MYSQL_HOME=/home/mysql/mysql-5.6.14
    export PATH=$PATH:$MYSQL_HOME/bin

使环境变量生效:

    source /etc/profile.d/mysql.sh

修改root密码:

    mysqladmin -u root password

编辑配置文件:

    vi /etc/my.cnf

内容如下:

    [mysqld]
    transaction-isolation = READ-COMMITTED
    log_bin=/data/mysql_binary_log
    binlog_format = mixed
    innodb_flush_log_at_trx_commit   = 2
    innodb_flush_method = O_DIRECT
    key_buffer = 16M
    key_buffer_size = 32M
    max_allowed_packet = 32M
    thread_stack = 256K
    thread_cache_size = 64
    query_cache_limit = 8M
    query_cache_size = 64M
    query_cache_type = 1
    max_connections = 550
    read_buffer_size = 2M
    read_rnd_buffer_size = 16M
    sort_buffer_size = 8M
    join_buffer_size = 8M
    innodb_flush_log_at_trx_commit   = 2
    innodb_log_buffer_size = 64M
    innodb_buffer_pool_size = 4G
    innodb_thread_concurrency = 8
    innodb_log_file_size = 512M
    [mysqld_safe]
    log-error=/data/mysqld.err
    pid-file=/data/mysqld.pid
    sql_mode=STRICT_ALL_ tableS

添加开机启动:

    chkconfig mysql on

启动MySQL:

    service mysql restart

根据需要建立元数据库:

    mysql -u root -p -e "create database hive DEFAULT CHARACTER SET utf8; create database rman
    DEFAULT CHARACTER SET utf8; create database oozie DEFAULT CHARACTER SET utf8; grant all on *.*
    TO 'root'@'%' IDENTIFIED BY 'mypassword'; "

● 安装MySQL JDBC驱动

    tar -zxvf mysql-connector-java-5.1.38.tar.gz
    cp ./mysql-connector-java-5.1.38/mysql-connector-java-5.1.38-bin.jar /usr/share/java/mysql-
    connector-java.jar

● 配置免密码ssh(这里配置了任意两台机器都免密码)

分别在四台机器上生成密钥对:

    cd ~
    ssh-keygen -t rsa

然后一路回车。

在cdh1上执行:

    cd ~/.ssh/
    ssh-copy-id cdh1
    scp /root/.ssh/authorized_keys cdh2:/root/.ssh/

在cdh2上执行:

    cd ~/.ssh/
    ssh-copy-id cdh2
    scp /root/.ssh/authorized_keys cdh3:/root/.ssh/

在cdh3上执行:

    cd ~/.ssh/
    ssh-copy-id cdh3
    scp /root/.ssh/authorized_keys cdh4:/home/grid/.ssh/

在cdh4上执行:

    cd ~/.ssh/
    ssh-copy-id cdh4
    scp /root/.ssh/authorized_keys cdh1:/root/.ssh/
    scp /root/.ssh/authorized_keys cdh2:/root/.ssh/
    scp /root/.ssh/authorized_keys cdh3:/root/.ssh/

2.在cdh1上安装Cloudera Manager

    tar -xzvf cloudera-manager*.tar.gz -C /opt/

建立cm数据库:

    /opt/cm-5.7.0/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -uroot -
    pmypassword --scm-host localhost scm scm scm

配置cm代理:

    vi /opt/cm-5.7.0/etc/cloudera-scm-agent/config.ini

将cm主机名改为cdh1:

    server_host=cdh1

将Parcel相关的三个文件复制到/opt/cloudera/parcel-repo:

    cp CDH-5.7.0-1.cdh5.7.0.p0.45-el6.parcel /opt/cloudera/parcel-repo/
    cp CDH-5.7.0-1.cdh5.7.0.p0.45-el6.parcel.sha1 /opt/cloudera/parcel-repo/
    cp manifest.json /opt/cloudera/parcel-repo/

改名:

    mv /opt/cloudera/parcel-repo/CDH-5.7.0-1.cdh5.7.0.p0.45-el6.parcel.sha1 /opt/cloudera/parcel-
    repo/CDH-5.7.0-1.cdh5.7.0.p0.45-el6.parcel.sha

修改属主:

    chown -R cloudera-scm:cloudera-scm /opt/cloudera/
    chown -R cloudera-scm:cloudera-scm /opt/cm-5.7.0/

将/opt/cm-5.7.0目录复制到其他三个主机:

    scp -r -p /opt/cm-5.7.0 cdh2:/opt/
    scp -r -p /opt/cm-5.7.0 cdh3:/opt/
    scp -r -p /opt/cm-5.7.0 cdh4:/opt/

3.在每个主机上建立/opt/cloudera/parcels目录,并修改属主

    mkdir -p /opt/cloudera/parcels
    chown cloudera-scm:cloudera-scm /opt/cloudera/parcels

4.在cdh1上启动cm server

    /opt/cm-5.7.0/etc/init.d/cloudera-scm-server start

此步骤需要运行一些时间,用下面的命令查看启动情况:

    tail -f /opt/cm-5.7.0/log/cloudera-scm-server/cloudera-scm-server.log

5.在所有主机上启动cm agent

    mkdir /opt/cm-5.7.0/run/cloudera-scm-agent
    chown cloudera-scm:cloudera-scm /opt/cm-5.7.0/run/cloudera-scm-agent
    /opt/cm-5.7.0/etc/init.d/cloudera-scm-agent start

6.登录cloudera manager控制台,安装配置CDH5及其服务

打开控制台http://172.16.1.101:7180/,显示“登录”页面。

默认的用户名和密码都是admin,登录后进入欢迎页面。勾选许可协议,单击“继续”。

进入版本说明页面,如图4-6所示。保持不变,单击“继续”。

图4-6 版本说明页面

进入服务说明页面,单击“继续”。

进入选择主机页面,如图4-7所示。全选cdh1、cdh2、cdh3、cdh4四个主机,单击“继续”。

图4-7 选择主机页面

进入选择存储库页面,保持不变,单击“继续”。

进入集群安装页面,单击“继续”。这一步会花费一些时间,进行CDH5的安装。

进入验证页面,单击“完成”。

进入集群设置页面,根据需要选择服务,本次安装选择了HDFS、Hive、Hue、Impala、Oozie、Sqoop 2、YARN等几项服务,单击“继续”。

进入自定义角色分配页面,保持不变,单击“继续”。

进入数据库设置页面,如图4-8所示。Hive、Reports Manager、OozieServer三个数据库主机都填写cdh2,数据库类型选择MySQL,数据库名称分别填写hive、rman和oozie,这是我们在安装配置MySQL时建立的三个数据库,用户名、密码按建库时的信息填写,测试连接成功后,单击“继续”。

图4-8 数据库设置页面

进入首次运行页面,等待运行完,单击“继续”。

进入安装成功页面,单击“完成”。

进入cloudera manager主页面,如图4-9所示。

图4-9 Cloudera Manager主页面

至此,CDH 5.7.0安装完成,主机和角色对应如表4-3所示。

表4-3 CDH服务-角色-主机对应关系

4.4.4 Cloudera Manager许可证管理

上一小节安装CDH5.7.0时,在版本说明页面有三个选项:Cloudera Express、Cloudera Enterprise数据集线器60天试用版和Cloudera Enterprise。Cloudera Express版本不需要许可证,试用版使用的是60天的试用许可证;Cloudera Enterprise需要许可证。我们选择的是默认配置的60天试用版。如果到了60天期限,是不是Cloudera Manager就完全不能用了呢?本小节就来介绍一下Cloudera Manager的许可证管理。

Cloudera Enterprise,也就是所谓的企业版有如下Express版本不具有的特性:

● 支持LDAP(Lightweight Directory Access Protocol,轻量级目录访问协议)和SAML(Security Assertion Markup Language,安全声明标记语言)身份认证。Cloudera Manager可以依赖内部数据库进行身份认证,企业版还支持通过LDAP和SAML等外部服务进行身份认证。

● 浏览和还原配置历史。无论何时,当你改变并保存了一系列关于服务、角色或主机的配置信息,Cloudera Manager都会自动保存前一个版本的配置和更改配置的用户名。这样就可以浏览以前的配置,并且在需要时可以回滚到以前的配置状态。

● 支持SNMP traps报警和用户定制的报警脚本。当预制定阈值越界等情况出现时,可以在任何时候向SNMP管理器报告错误情况,而不用等待SNMP管理器的再次轮询。

● 备份与崩溃恢复。Cloudera Manager企业版提供了一套集成的、易用的、Hadoop平台上的数据保护解决方案。Cloudera Manager允许跨数据中心的数据复制,包括HDFS里的数据、Hive表中的数据、Hive元数据、Impala元数据等。即使遇到一个数据中心都当掉的情况,仍然可以保证这些关键数据是可用的。

● 能够建立操作报告。在企业版Cloudera Manager的报告页面,可以建立HDFS的使用报告,包括每个用户、组或者目录的文件数及数据大小等信息,还可以报告MapReduce的操作情况。

● 支持Cloudera导航。Cloudera导航是一个与Hadoop平台完全集成的数据管理和安全系统,包括数据的审计、可视化、加密、搜索、分析等数据管理功能。

● 只有企业版支持Rolling Restart、History and Rollback和SendDiagnostic Data操作命令。

● 提供集群使用报告。企业版Cloudera Manager的集群使用报告页面显示汇总的YARN和Impala作业使用信息。报告还显示CPU、内存的使用情况,基于YARNfair调度器的资源分配情况,Impala查询等,可以配置报告的时间范围。

登录Cloudera Manager后,选择“管理”→“许可证”菜单,就访问到许可证页面。如果已经安装了许可证,该页面将显示许可证的状态(如当前是否有效)和许可证的属主、密钥、过期时间等细节信息。

如果企业版的许可证过期,Cloudera Manager仍然可以使用,只是企业版特性将不可用。试用版许可证只能使用一次,当60天试用期满,或者手工结束试用,将不能再次开启试用。试用结束后,企业版特性立即不可用,但是被禁用功能的相关数据和配置并不删除,一旦安装了企业版许可证,这些功能会再次生效。

在60天试用期即将结束前,Cloudera Manager的登录页面会给出试用将要到期的提示。此时可以在到期前的任意时间点,手工终止Cloudera Enterprise数据集线器版的试用,具体操作步骤如下:

步骤01在“许可证”页面,单击“结束试用”并确认。

步骤02单击“集群”→“Cloudera Manager Service”,打开Cloudera Manager服务页面。

步骤03在Cloudera Manager服务页面单击“操作”→“重启”,重启服务。

步骤04重启HBase、HDFS、Hive等配置改变的相关服务。

手工终止试用后,试用版会自动变更为Cloudera Express版。除了企业版特性,其他Cloudera Manager的基本功能不受任何影响。如果购买了企业版许可证,可以从Express版直接升级到企业版。只需要在“许可证”页面单击“上载许可证”,然后按照向导的步骤顺序执行即可。