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/bigdataProceed 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集群的更多相关文章
- CentOS7 安装Hbase集群
继续接上一章,已安装好Hadoop集群环境 http://www.cnblogs.com/dopeter/p/4612232.html 在此基础上继续安装Hbase集群 Hbase版本为1.0.1.1 ...
- CentOS7安装rabbitmq集群(二进制)
一.RabbiMQ简介 RabbiMQ是用Erang开发的,集群非常方便,因为Erlang天生就是一门分布式语言,但其本身并不支持负载均衡. RabbiMQ模式 RabbitMQ模式大概分为以下三种: ...
- CentOS7安装RabbitMQ集群
实验环境 RabbitMQ 集群 server1.example.com IP: 10.10.10.11 Node: diskserver2.example.com IP: 10.1 ...
- CentOS7 安装spark集群
Spark版本 1.6.0 Scala版本 2.11.7 Zookeeper版本 3.4.7 配置虚拟机 3台虚拟机,sm,sd1,sd2 1. 关闭防火墙 systemctl stop firewa ...
- CentOS7 安装Hadoop集群环境
先按照上一篇安装与配置好CentOS以及zookeeper http://www.cnblogs.com/dopeter/p/4609276.html 本章介绍在CentOS搭建Hadoop集群环境 ...
- CentOS7 安装kafka集群
1. 环境准备 JDK1.8 ZooKeeper集群(参见本人博文) Scala2.12(如果需要做scala开发的话,安装方法参见本人博文) 本次安装的kafka和zookeeper集群在同一套物理 ...
- centos7 安装hadoop 集群遇到的问题
集群安装之后,hdfs 不能上传文件,也提示rute等错误,其实是防火墙问题,关闭防火墙即可. CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙.firewa ...
- CentOS7安装weblogic集群思路梳理
以前经常用weblogic集群,但是却没有仔细想过要实现它.这不,前两天成功安装了weblogic集群,现在将其思路整理下.防止日后自己忘掉了. 一.安装weblogic10.3.6 1. 在官网下载 ...
- 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. ...
随机推荐
- 网络知识--OSI七层网络与TCP/IP五层网络架构及二层/三层网络
作为一个合格的运维人员,一定要熟悉掌握OSI七层网络和TCP/IP五层网络结构知识. 废话不多说!下面就逐一展开对这两个网络架构知识的说明:一.OSI七层网络协议OSI是Open System Int ...
- Spring WebFlux, 它是一种异步的, 非阻塞的, 支持背压(Back pressure)机制的Web 开发WebFlux 支持两种编程风(姿)格(势) 使用@Controller这种基于注解
概述 什么是 Spring WebFlux, 它是一种异步的, 非阻塞的, 支持背压(Back pressure)机制的Web 开发框架. 要深入了解 Spring WebFlux, 首先要了知道 R ...
- python笔记-数学、元组、日期、文件
python在很多地方和C++相似,比如都会有关系.逻辑等运算符,但也有不同的地方,比如:#Python Number 类型转换int(x [,base ]) 将x转换为一个整数 long(x [,b ...
- python学习3---产生随机数
1.产生随机数 import random #random.random()生成[0.0,1.0)之间的浮点数 print(random.random()) #random.randint(a,b)生 ...
- python websocket Django 实时消息推送
概述: WebSocket 是什么? WebSocket 是 HTML5 提供的一种浏览器与服务器间进行全双工通讯的协议.依靠这种协议可以实现客户端和服务器端 ,一次握手,双向实时通信. WebSoc ...
- inno安装客户端,写注册表url调用客户端
[Registry] Root: HKCR; SubKey: xxx; ValueData: "xxx"; ValueType: string; Flags: CreateValu ...
- git 取消文件跟踪
1.共享式忽略 git库路径下的.gitignore文件 2.独享式忽略 git库路径下的.git/info/exclude ,第一次需要自己创建exclude文件 然后将要忽略的文件名加到上面的 ...
- 【项目经验】Mockito教程
一.教程 转载:https://blog.csdn.net/sdyy321/article/details/38757135/ 官网: http://mockito.org API文档:http:// ...
- composer.json
{ "require": { "doctrine/doctrine-orm-module": "0.*", ...
- python 常用库
Numpy, Pandas 数据处理 Scipy 科学计算 Matplotlib 可视化 Scikit Learn 机器学习 Keras 深度学习模型 jieba 分词 Gensim 主题(包含 ...