​ 大数据可以解决很多的海量数据的存储和计算的场景,对于大部分公司来说是一个非常具有战略意义的技术,不管是使用大数据公司的产品,还是公司内部搭建技术平台等,都离不开一个学习的过程和熟练使用的过程。所以一个大数据技术的基础环境还是很有必要的了解和熟悉的。

准备

服务器信息

  1. 4台 CentOS Linux release 7.9.2009 (Core)

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    
    172.26.10.71 cdh01   #主节点
    172.26.10.72 cdh02   #从节点
    172.26.10.73 cdh03   #从节点
    172.26.10.74 cdh04   #从节点
       
    #配置所有机器的hosts文件
    vim /etc/hosts
       
    #新增信息如下:
    172.26.10.71 cdh01
    172.26.10.72 cdh02
    172.26.10.73 cdh03
    172.26.10.74 cdh04
    
  2. 服务器配置(4台配置一样)

  3. SELinux关闭

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    
    #主要是对于大数据来说,主机内部是相互信任的,一些安全机制会降低集群效率,以及带来一些问题,所以建议是关闭的
       
    #查看状态SELinux的状态
    /usr/sbin/sestatus -v  | grep "SELinux status"
       
    #临时修改
    setenforce 0
       
    #永久修改
    vim /etc/selinux/config 
    SELINUX=disabled
    
  4. 关闭防火墙

    1
    2
    3
    4
    5
    6
    7
    8
    
    #查看防火墙状态
    firewall-cmd --state
       
    #停止防火墙
    systemctl stop firewalld.service
       
    #禁止防火墙开机启动
    systemctl disable firewalld.service
    
  5. 调整vm.swappiness Linux内核参数

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    
    #Cloudera Manager 可能会报告您的主机由于交换而运行状况不良
       
    vim /etc/sysctl.conf
       
    vm.swappiness=1
       
    #修改完配置文件,同步其他机器
    ansible cdh -m copy -a 'src=/etc/sysctl.conf dest=/etc/sysctl.conf'
       
    #让配置文件生效
    ansible all -a 'sysctl -p'
    
  6. 禁用Transparent Hugepage

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    #已启用透明大页面压缩,可能会导致重大性能问题
    echo never > /sys/kernel/mm/transparent_hugepage/defrag
    echo never > /sys/kernel/mm/transparent_hugepage/enabled
       
    #修改配置vim /etc/rc.local 重启后也能生效
    #以上运行命令新增
    #赋值可执行权限
    ansible all -a 'chmod +x /etc/rc.d/rc.local'
       
    

软件安装配置

  1. Ansible 工具安装,方便后面的一些运维操作(可选)

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
    #企业版 Linux 附加软件包(以下简称 EPEL)是一个 Fedora 特别兴趣小组,用以创建、维护以及管理针对企业版 Linux 的一个高质量附加软件包集,面向的对象包括但不限于 红帽企业版 Linux (RHEL)、 CentOS、Scientific Linux (SL)、Oracle Linux (OL) 。
    yum install epel-release
    yum install ansible -y
       
    #配置下hosts文件信息
    vim /etc/ansible/hosts
       
    #新增信息如下:
    cdh01
       
    #新增信息如下:
    [cdh]
    cdh02
    cdh03
    cdh04
       
    #使用技巧
    1. 如果是非本地的批量操作
    ansible cdh -m shell -a '执行'
    2. 所有的配置的服务器批量操作
    ansible all -m shell -a '执行'
    
  2. 配置免密登录(在主节点上配置和分发)

    1
    2
    3
    4
    5
    6
    7
    8
    
    #在主机上生成密钥
    ssh-keygen -t rsa 
       
    #拷贝到其他节点上
    ssh-copy-id cdh01
    ssh-copy-id cdh02
    ssh-copy-id cdh03
    ssh-copy-id cdh04
    
  3. 一些配置文件的拷贝

    1
    2
    
    #使用ansible命令拷贝文件
    ansible cdh -m copy -a 'src=/etc/hosts dest=/etc/hosts'
    
  4. 配置服务器时间(可选)

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    
    #安装
    yum install ntp -y            
       
    #启动NTP时间服务器
    service ntpd start         
       
    #设置NTP开机自动启动
    chkconfig ntpd on          
       
    #查看NTP是否正常运行
    chkconfig | grep ntp   
       
    #以上可以使用ansible的命令来批量的执行命令
    ansible all -m shell -a 'ntpq -p'
    

必要软件安装

  1. Java安装(每台服务器都需要安装)

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    
    #资源下载
    链接: https://pan.baidu.com/s/1uEtPhtZ8Ar-5jDKYYz6Dzg  密码: f03u
    --来自百度网盘超级会员V6的分享
    如果过期请联系笔者
       
    #通过rpm命令直接安装java
    rpm -ivh jdk-8u181-linux-x64.rpm
       
    #配置环境变量
    vim /etc/profile
       
    #添加如下(使用rpm安装的java在/usr/java/jdk1.8XXXX)
    export JAVA_HOME=/usr/java/jdk1.8.0_181-amd64
    export JRE_HOME=/usr/java/jdk1.8.0_181-amd64/jre
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
    
  2. MySQL5.7安装(主节点安装数据库)

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    
    #下载资源
    链接: https://pan.baidu.com/s/1gWQcYVQm43WE9DVVcK_-4A  密码: j2ba
    --来自百度网盘超级会员V6的分享
       
    #解压安装包
    tar -xvf mysql-5.7.24-1.el7.x86_64.rpm-bundle.tar
       
    #先卸载系统自带的数据库
    yum -y remove mariadb-libs
       
    #安装一些必要工具
    yum install -y net-tools
       
    #开始安装
    rpm -ivh mysql-community-common-5.7.24-1.el7.x86_64.rpm
    rpm -ivh mysql-community-libs-5.7.24-1.el7.x86_64.rpm
    rpm -ivh mysql-community-client-5.7.24-1.el7.x86_64.rpm
    rpm -ivh mysql-community-server-5.7.24-1.el7.x86_64.rpm
    rpm -ivh mysql-community-libs-compat-5.7.24-1.el7.x86_64.rpm
       
    #启动服务
    systemctl start mysqld
       
    #用资源中的自定义my.conf,覆盖/etc/my.conf
    cp /home/admin/mysql/my.conf /etc/my.conf
       
    #查看默认的密码
    grep password /var/log/mysqld.log
       
    #登录数据库
    mysql -uroot -p
       
    #修改数据库密码
    set password = password('Password_123');
       
    #设置远程登录
    grant all privileges on *.* to 'root'@'%' identified by 'Password_123';
    flush privileges;
       
    #创建需要的数据库和用户
    CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
    CREATE DATABASE amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
    CREATE DATABASE rman DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
    CREATE DATABASE metastore DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
    CREATE DATABASE oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
    CREATE DATABASE hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
    CREATE DATABASE sentry DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
    CREATE DATABASE nav DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
    CREATE DATABASE navms DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
       
    #创建用户
    GRANT ALL ON scm.* TO 'scm'@'%' IDENTIFIED BY 'scm';
    GRANT ALL ON amon.* TO 'amon'@'%' IDENTIFIED BY 'amon';
    GRANT ALL ON rman.* TO 'rman'@'%' IDENTIFIED BY 'rman';
    GRANT ALL ON metastore.* TO 'hive'@'%' IDENTIFIED BY 'hive';
    GRANT ALL ON oozie.* TO 'oozie'@'%' IDENTIFIED BY 'oozie';
    GRANT ALL ON hue.* TO 'hue'@'%' IDENTIFIED BY 'hue';
    GRANT ALL ON sentry.* TO 'sentry'@'%' IDENTIFIED BY 'sentry';
    GRANT ALL ON nav.* TO 'nav'@'%' IDENTIFIED BY 'nav';
    GRANT ALL ON navms.* TO 'navms'@'%' IDENTIFIED BY 'navms';
       
    #flush privileges 命令本质上的作用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里。
    flush privileges;
       
    #配置MySQL的链接器
    mkdir -p /usr/share/java/
    cp mysql-connector-java-5.1.48-bin.jar /usr/share/java/mysql-connector-java.jar
       
    

安装

  1. 安装Cloudera Manager Server (主节点安装)

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    
    #资源下载
    链接: https://pan.baidu.com/s/1W9FnZWsXTUi7mw5gTM3I-g  密码: gj46
    --来自百度网盘超级会员V6的分享
       
    #本地安装
    yum localinstall ./cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm ./cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm ./cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm -y
       
    #执行必要的数据库脚本执行,MySQL数据库与CM Server是同一台主机
    /opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm
       
    #启动服务
    systemctl start cloudera-scm-server & systemctl enable cloudera-scm-server
    
  2. 从节点安装

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    
    #拷贝安装包到节点
    ansible cdh -m copy -a 'src=/home/admin/cdh6.3.2/cloudera-repos dest=/home/admin/'
       
    #安装agent
    ansible cdh -a 'yum localinstall /home/admin/cloudera-repos/cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm /home/admin/cloudera-repos/cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm -y'
       
    #修改配置文件,看自己的需求所有都可以修改,也可以只修改从节点
    vim /etc/cloudera-scm-agent/config.ini
       
    #server_host=localhost
    server_host=cdh01
       
    #启动服务
    systemctl start cloudera-scm-agent & systemctl enable cloudera-scm-agent
       
    
  3. 配置本地Parcel存储库

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    
    #资源下载
    链接: https://pan.baidu.com/s/1jyFbQpvTZlK5DgR8ZIlJRA  密码: tjj6
    --来自百度网盘超级会员V6的分享
       
    #查看本地路径
    cd /opt/cloudera/parcel-repo
       
    #拷贝文件到本地路径
    cp /home/admin/cdh6.3.2/cloudera_manager/* /opt/cloudera/parcel-repo
       
    #执行用户组配置
    chown -R cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo/*
    

验证

  1. 浏览器访问cdh01:7180,默认的账户和密码 admin/admin

  2. 配置都是下一步和继续,看各自的需求来选择

  3. 这步检查尽量做到全部通过,防止后面增加不必要的麻烦

添加主机

  • 服务器的环境还是和之前的一样
  • 新主机当做从节点安装,参考上面的安装,步骤,一些从节点的配置,全部拷贝就好了
  • 启动后,在CM界面上,点开所有主机,添加主机,然后全部选择已经管理的主机,点击添加就好了

FAQ

  1. 有遇到这个错误:No route to host (Host unreachable)

    1
    
    关闭所有的节点的防火墙即可
    

总结

​ 如果想快速的使用大数据技术或者学习,还是建议优先使用CDH的产品,可以拿到一个相对稳定的环境,如果熟练使用后,想更深的了解内部原理和机制,可以使用原生的方式安装和运行。这里有一些参考: