之前安装大数据组件都是一个一个手动安装的,最多弄一个脚本自动安装。手动安装麻烦不说,还没有可以监控集群的可视化界面,而且组件的稳定性也是个问题。

所以我们应该试一试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的一些基本操作的。

我是仔细阅读官方文档一步一步做的,期间补了很多课,收获了很多,做完一遍感觉以后都不会再做这些事了。

希望本文对你有帮助。

CentOS7安装HDP集群的更多相关文章

  1. CentOS7 安装Hbase集群

    继续接上一章,已安装好Hadoop集群环境 http://www.cnblogs.com/dopeter/p/4612232.html 在此基础上继续安装Hbase集群 Hbase版本为1.0.1.1 ...

  2. CentOS7安装rabbitmq集群(二进制)

    一.RabbiMQ简介 RabbiMQ是用Erang开发的,集群非常方便,因为Erlang天生就是一门分布式语言,但其本身并不支持负载均衡. RabbiMQ模式 RabbitMQ模式大概分为以下三种: ...

  3. CentOS7安装RabbitMQ集群

    实验环境 RabbitMQ 集群 server1.example.com    IP: 10.10.10.11    Node: diskserver2.example.com    IP: 10.1 ...

  4. CentOS7 安装spark集群

    Spark版本 1.6.0 Scala版本 2.11.7 Zookeeper版本 3.4.7 配置虚拟机 3台虚拟机,sm,sd1,sd2 1. 关闭防火墙 systemctl stop firewa ...

  5. CentOS7 安装Hadoop集群环境

    先按照上一篇安装与配置好CentOS以及zookeeper http://www.cnblogs.com/dopeter/p/4609276.html 本章介绍在CentOS搭建Hadoop集群环境 ...

  6. CentOS7 安装kafka集群

    1. 环境准备 JDK1.8 ZooKeeper集群(参见本人博文) Scala2.12(如果需要做scala开发的话,安装方法参见本人博文) 本次安装的kafka和zookeeper集群在同一套物理 ...

  7. centos7 安装hadoop 集群遇到的问题

    集群安装之后,hdfs 不能上传文件,也提示rute等错误,其实是防火墙问题,关闭防火墙即可. CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙.firewa ...

  8. CentOS7安装weblogic集群思路梳理

    以前经常用weblogic集群,但是却没有仔细想过要实现它.这不,前两天成功安装了weblogic集群,现在将其思路整理下.防止日后自己忘掉了. 一.安装weblogic10.3.6 1. 在官网下载 ...

  9. CentOS7安装Consul集群

    1.准备4台服务器 linux1 192.168.56.101 linux2 192.168.56.102 linux3 192.168.56.103 linux4 192.168.56.104 2. ...

随机推荐

  1. keras图像风格迁移

    风格迁移: 在内容上尽量与基准图像保持一致,在风格上尽量与风格图像保持一致. 1. 使用预训练的VGG19网络提取特征 2. 损失函数之一是"内容损失"(content loss) ...

  2. 【Linux】scp指令

    语法: scp [可选参数] file_source file_target 参数说明: -1: 强制scp命令使用协议ssh1 -2: 强制scp命令使用协议ssh2 -4: 强制scp命令只使用I ...

  3. Windows Essentials Movie Maker 安装失败报错 ——问题解决

    Windows Essentials Movie Maker 安装失败报错: (软件包名: wlsetup-all.exe) 查到官方论坛给出了一些回复: https://social.technet ...

  4. TypeScript 类型定义文件(*.d.ts)自动生成工具

    在开发ts时,有时会遇到没有d.ts文件的库,同时在老项目迁移到ts项目时也会遇到一些文件需要自己编写声明文件,但是在需要的声明文件比较多的情况,就需要自动生产声明文件.用过几个库.今天简单记录一下. ...

  5. 初用jdbc来运行事务

    dao层 public Connection getConnection() throws Exception { Class.forName(driver); if (con == null || ...

  6. java语言入门

    Java语言的介绍: Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言. 它最初被命名为Oak,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机.电话.闹钟.烤面包机等家用电器的控 ...

  7. OnTriggerEnter2D方法

    我两个物体A,B都添加了Circle Collider 2D,并且都勾选了is Trigger,我在A的脚本里用void OnTriggerEnter2D(Collider2D coll)检测碰撞,至 ...

  8. zoj 2524 并查集裸

    Description There are so many different religions in the world today that it is difficult to keep tr ...

  9. MySQL-02-进阶

    大纲 1)数据约束 2)数据库设计(表设计) 3)存储过程 4)触发器 5)mysql权限问题 数据约束 2.1什么数据约束 对用户操作表的数据进行约束 2.2 默认值 作用: 当用户对使用默认值的字 ...

  10. cisco4507引擎模式切换

    1.redu     mode sso2.wri 可能存在的问题:无法切换至sso原因:ios镜像版本不一致 解决方法: 1. copy bootflash: slavebootflash: 2. d ...