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

所以我们应该试一试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. 2019微软Power BI 每月功能更新系列——3月Power BI 新功能学习

    Power BI3月产品功能更新发布啦!本次新功能新增了热图和单选切片器:完善了新的DAX功能和对现有功能的改进(例如按钮和选择窗格):同时官方表示建模视图的全面改进也正在进行中~Woo~那么,本月更 ...

  2. eclipse 中git无法https下载提交代码

    使用eclipse下载github代码时,报错信息为cannot open git-upload-pack,如下图: 其实就是ssl协议的版本不对, 2018年2月8日后禁止通过TLSv1.1协议连接 ...

  3. js bind0

    $(function(){ $("#ul").on('click','li',function(){ if(!$(this).a $(function(){ $("#ul ...

  4. matlab画图命令笔记

    1 函数画图fplot % Create a function plot of y = x^3 over the domain of [-2 2]. % Plot with a thick red l ...

  5. 【oracle】dmp导数据库

    假定数据库A为源数据库,数据库B为目标数据库 step1在数据库A中,导出生成.dmp文件,操作流程如下(以下操作均在系统用户ora11g下执行) 1.该操作只需要在第一次使用时执行,A_dump_d ...

  6. 使用nginx反向代理实现多端口映射(未解决)

    问题: 想实现访问在同一个主机上实现多个域名访问, 如用 blog.xxx.com访问博客(使用8000端口), app.xxx.com访问其他应用(使用8080端口): 不同的服务用URL区分,不用 ...

  7. org.jsoup.Jsoup找不到jar包问题解决思路

    今天在idea中导入项目,出现了这样的问题 通过idea的自带的导包功能,却提示找不到这个东西.于是就去maven仓库搜索这个咚咚 <!-- https://mvnrepository.com/ ...

  8. ccf-集合竞价-201412-3

    这道题数据量很小,所以用前缀和直接暴力解决了 首先将浮点数转换为整数; int_p=(int)(dou_p*100+0.5); 必须加一个eps,否则浮点数运算会有误差 然后从高到低枚举 #inclu ...

  9. Calling Circles(UVa 247)(Floyd 算法)

    用Floyd算法求出传递闭包,然后用dfs求出每条连通分量.注意其中用到的几个小技巧: #include<cstdio> #include<iostream> #include ...

  10. eclipse中js报错简单快捷的解决方式

    eclipse中对正确的js文件报错十分常见,我的项目中只要是以.js结尾的必会报错,作为一名小小的程序员,看到“满江红”甚是烦躁!今天就给大家分享一个方便又快捷的解决方案. 瞄准被报错的js文件点鼠 ...