zoukankan      html  css  js  c++  java
  • CentOS7安装HDP集群

    之前安装大数据组件都是一个一个手动安装的,最多弄一个脚本自动安装。手动安装麻烦不说,还没有可以监控集群的可视化界面,而且组件的稳定性也是个问题。
    所以我们应该试一试HDP和CDH这种企业级的hadoop技术栈。 CDH用的人最多,我本来想安装一个社区版的CDH,可惜社区版的官网打开之后样式乱了,根本没法儿看。所以我选择了HDP。HDP是完全免费的,而且基本上跟apache的hadoop保持同步。HDP使用ambari来安装,ambari虽然功能相对弱了一些,不过我感觉基本够用了。可以安装各种服务,可以监控集群状态,这正是我想要的功能。此外,它还可以二次开发,这就是开源的好处。

    因为是个人学习用,所以我在自己的笔记本上装了3个虚拟机。

    硬件要求

    • 固态硬盘可用空间>=105G,机械硬盘的话不要这样玩,因为实在是太卡了。
    • 内存>=8G
    • 系统最好是Win10,因为自带了open ssh的客户端。否则的话你就需要安装一个ssh客户端,比如开源版本的PuTTY

    准备3台虚拟机

    1.VMWare安装CentOS7.5(DVD版),注意安装的时候SEFTWARE SELECTION要选择GNOME Desktop版本,切记!不然装好系统后没有桌面!
    每台虚拟机给2G内存。
    装好之后打开terminal,切换到root用户:su - root注意本文所有操作均使用root用户,因为安装ambari需要root用户!
    2.修改主机名echo "hdp001" > /etc/hostname。 重启后生效,先别重启,我们等下再重启。
    3.配置桥接网络

    ifconfig #查看一下网关的名字是ens33,有的是eth0
    vim /etc/sysconfig/network-scripts/ifcfg-ens33
    修改BOOTPROTO=static
    添加IPADDR=192.168.0.104
    添加PREFIX0=24
    添加GATEWAY=192.168.0.1
    添加DNS1=8.8.8.8
    添加ONBOOT=yes
    
    /etc/init.d/network restart #重启网络
    

    右键虚拟机>>设置>>硬件>>网络适配器>>网络连接>>选择桥接模式
    4.配置共享目录
    先安装VMWare Tools(略)如果你在虚拟机里打不开那个DVD,右键虚拟机>>设置>>硬件>>CD/DVD>>连接>>勾选“使用物理驱动器(自动检测)
    右键虚拟机>>设置>>选项>>共享文件夹>>右边勾选“总是启用”>>文件夹里点“添加”,添加一个文件夹,比如文件夹的名字叫CentOS_Share
    弄好之后,虚拟机里是看不到共享的文件夹的

    cd /mnt/hgfs/
    # 查看一下有哪些共享的目录,显示CentOS_Share
    vmware-hgfsclient
    # 挂在共享文件夹,这一步显示错误
    mount -t vmhgfs .host:/  /mnt/hgfs
    # 安装一下这个工具
    yum install open-vm-tools-devel -y
    # 再次执行一下就好了
    vmhgfs-fuse .host:/ /mnt/hgfs
    

    5.重启系统
    6.配置系统镜像源
    备份一下:CentOS-Base.repo sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
    下载淘宝镜像仓库:wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    更新软件包缓存:yum makecache
    关机:shutdown
    7.克隆2个虚拟机:虚拟机>>管理>>克隆>>完全复制
    克隆后按照上面的步骤配置另两台虚拟机。另两台虚拟机的主机名为hdp002, hdp003,IP为192.168.0.105, 192.168.0.106
    注意设置共享目录,只需要在hdp001上设置就可以了,这个是为了后面拷贝tar包方便。
    至此3台虚拟机都已经准备完毕

    准备安装环境

    注意本文每一步都是有原因的,完全按照官方文档的要求来的。

    1.配置ssh免密钥
    hdp001上执行:

    ssh-keygen
    ssh-copy-id root@192.168.0.104
    ssh-copy-id root@192.168.0.105
    ssh-copy-id root@192.168.0.106
    

    2.修改每台机器的hosts文件:

    vim /etc/hosts
    192.168.0.104 hdp001
    192.168.0.105 hdp002
    192.168.0.106 hdp003
    

    3.每台机器安装ntp服务:
    CentOS7默认已经安装了ntp服务。
    查看服务状态:systemctl status ntpd, 默认没有开启该服务。
    hdp001上配置ntp.conf:

    vim /etc/ntp.conf
    注释掉这几行:
    #server 0.centos.pool.ntp.org iburst
    #server 1.centos.pool.ntp.org iburst
    #server 2.centos.pool.ntp.org iburst
    #server 3.centos.pool.ntp.org iburst
    末尾添加:
    server 127.127.1.0
    fudge 127.127.1.0 stratum 10
    # 10~15都是可以的,表示网络时间服务提供者来自于局域网。0表示为顶级
    

    另外两台机器同理:注释掉那4行,然后在末尾添加:

    server hdp001
    fudge 127.127.1.0 stratum 10
    

    每台机器禁用CentOS自带的chronyd:

    systemctl stop chronyd.service
    systemctl disable chronyd.service
    

    每台机器启动ntp服务:

    systemctl start ntpd
    systemctl enable ntpd.service #设置开机启动服务
    

    4.每台机器禁用防火墙:

    systemctl stop firewalld
    systemctl disable firewalld
    

    5.每台机器禁用SELinux和PackageKit,并检查umask Value
    禁用SELinux:

    setenforce 0
    # 查看状态: current mode permissive 就对了
    sestatus
    # 永久禁用
    vim /etc/selinux/config
    SELINUX=disabled
    

    禁止packagekit离线更新服务的办法:

    systemctl status packagekit-offline-update.service  # 查看状态,默认就是关闭的
    systemctl disable packagekit-offline-update.service # 关闭
    # 也可以用下面这种方式禁用它
    vim /etc/yum/pluginconf.d/refresh-packagekit.conf   
    enabled=0
    

    检查umask: umask, 默认就是0022,不用改了

    6.每台机器修改ulimit

    vim /etc/security/limits.conf 
    * soft noproc 127093
    * hard noproc 127093
    * soft nofile 127093
    * hard nofile 127093
    
    vim /etc/security/limits.d/20-nproc.conf
    #*          soft    nproc     4096
    #root       soft    nproc     unlimited
    *          soft    nproc     127098
    *          hard    nproc     204800
    

    重启后生效,暂时先别重启

    7.每台机器安装oracle jdk1.8
    到这里下载jdk的安装包

    # 安装
    rpm -ivh jdk-8u171-linux-x64.rpm
    # 配置JAVA_HOME
    vim /etc/profile
    JAVA_HOME=/usr/java/jdk1.8.0_171-amd64
    PATH=$PATH:$JAVA_HOME/bin
    export JAVA_HOME
    source /etc/profile
    # 选择默认jdk版本为oracle jdk
    alternatives --config java
    

    8.下载hdp安装包
    网络不太好,很容易出问题,还是离线安装好一些。
    ambari-2.6.2.0-centos7.tar.gz
    HDP-2.6.5.0-centos7-rpm.tar.gz
    HDP-UTILS-1.1.0.22-centos7.tar.gz
    HDP-GPL-2.6.5.0-centos7-gpl.tar.gz
    HDP-GPL是新出来的。新版hadoop使用了LZO数据压缩库,这个协议跟HDP栈的协议不相同,所以需要这玩意。

    9.hdp001上搭建http服务器
    可以安装apache的httpd。不过我觉得每必要,因为它只需要一个最简单的http服务器就可以了。我们可以做:

    # 新建/var/www/html文件夹
    mkdir -p /var/www/html
    # 将第8步下载的tar包解压到这个目录下
    tar -zxvf xxx.tar.gz -C /var/www/html
    # 开启http服务
    cd /var/www/html
    python -m SimpleHTTPServer
    
    # 就这样一句话就开启了一个http服务器,注意端口号是 8000
    

    10.每台机器创建本地yum仓库

    wget -O /etc/yum.repos.d/ambari.repo http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.6.2.0/ambari.repo
    wget -O /etc/yum.repos.d/hdp.repo http://public-repo-1.hortonworks.com/HDP/centos7/2.x/updates/2.6.5.0/hdp.repo
    wget -O /etc/yum.repos.d/hdp.gpl.repo http://public-repo-1.hortonworks.com/HDP-GPL/centos7/2.x/updates/2.6.5.0/hdp.gpl.repo
    
    vim /etc/yum.repos.d/ambari.repo
    [Updates-Ambari-2.6.2.0]
    name=Ambari-2.6.2.0-Updates
    baseurl=http://hdp001:8000/ambari/centos7/2.6.2.0-155
    gpgcheck=0
    gpgkey=http://public-repo-1.hortonworks.com/ambari/centos6/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
    enabled=1
    priority=1
    
    yum update
    

    11.每台机器重启
    上面设置了ulimit和线程数还没有重启,所以这里重启一下。 如果不想重启,请自行百度解决办法。

    至此,所有准备都齐全了

    安装ambari

    hdp001上安装ambari-server:
    yum install ambari-server

    启动server之前必须先配置:
    ambari-server setup

    • Customize user account for ambari-server daemon: n (使用root用户)
      选择Custom JDK。因为我们已经提前在每台机器上安装好jdk了,这时候输入JAVA_HOME的地址:/usr/java/jdk1.8.0_171-amd64

    • LZO数据压缩库: n

    • Enter advanced database configuration: n (安装默认的PostgreSQL)
      默认的数据库名称是 ambari
      默认的用户名密码是 ambari/bigdata

    • Proceed with configuring remote database connection properties [y/n]: y (我安装的时候没有这一项,可能老版本有这一项)

    配置结束之后先别急着启动,需要改几个配置,否则启动不起来。

    每台机器做如下修改:

    vim /etc/ambari-server/conf/ambari.properties
    # 设置启动超时时间,默认是50秒,时间太短了,在虚拟机里跑50秒根本就不够
    server.startup.web.timeout=300
    
    vim /etc/ambari-agent/conf/ambari-agent.ini
    # CentOS7.5自带的openssl版本是openssl-1.0.2,不加这一句,后面install ambari的时候总是失败。官方文档竟然没有提这个!
    force_https_protocol=PROTOCOL_TLSv1_2
    

    hdp001上启动ambari-server
    ambari-server start
    查看状态:ambari-server status

    hdp001上登录ambari: http://localhost:8080 默认账户密码:admin/admin

    Launch Install Wizard:
    输入集群名称:hdpbd
    选择版本2.6,选择本地仓库,输入base url:

    http://hdp001:8000/HDP/centos7/2.6.5.0-292
    http://hdp001:8000/HDP-UTILS/centos7/1.1.0.22
    

    输入主机名:

    hdp001
    hdp002
    hdp003
    

    点下一步的时候提示不是全域名,没关系,我们是局域网本来就不需要配什么全域名

    输入hdp001的私钥,让hdp001能够与另两台机器通信(明明配置过免密钥登录,不明白为什么这里还要输入hdp001的私钥):

    cat /root/.ssh/id_rsa
    

    配置好了之后就可以安装服务了。 安装服务的时候,有的服务会依赖其它的服务,提示你必须勾选,那就按照它要求的来就好了。
    安装服务的时候会选择master和slave。我的master自然是hdp001这台主机了。
    datanode我勾选了三台机器。
    有的服务有必填的选项,会变红,输入一个用户名和密码就可以了
    有的服务比如hive要求内存不小于512M,那就修改一下就好了,其它的就不管他了

    验证服务

    服务装好后,默认服务是没有启动的。点击"Actions"启动服务即可。
    我启动了 zookeeper和kafka。

    hdp001上执行:

    cd /usr/hdp/2.6.5.0-292/kafka
    # 创建topic
    bin/kafka-topics.sh --zookeeper localhost:2181 --create --topic ttt --replication-factor 1 --partitions 1
    # 发送数据,注意端口号是6667哟
    bin/kafka-console-producer.sh --broker-list hdp001:6667 --topic ttt
    # 另启一个terminal,接收数据
    bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic ttt --from-beginning
    

    安装这些东西很烦,这种事一般都由专业的运维人员来做。但是我们还是要熟悉一下linux的一些基本操作的。
    我是仔细阅读官方文档一步一步做的,期间补了很多课,收获了很多,做完一遍感觉以后都不会再做这些事了。

    希望本文对你有帮助。

  • 相关阅读:
    SQL分页存储过程——表名、返回的列、排序字段、排序类型、条件、页尺寸、页码
    SQL——触发器——插入触发器——边学边项目写的。
    SQL链表查询 数据库为空
    【错误积累】更新失败,数据包解压时出现错误!
    VS使用技巧(转)
    命令模式
    代理模式
    模板方法模式
    享元模式
    MongoDB 分片2
  • 原文地址:https://www.cnblogs.com/ahau10/p/9302214.html
Copyright © 2011-2022 走看看