Hadoop 集群安装

hadoop发行版

1. Apache社区版

组件兼容性问题多,集群的部署、安装、配置和运维复杂

2. 第三方版本

2.1. Cloudera发行版(CDH)

最成型的发行版本,拥有最多的部署案例。提供强大的部署、管理和监控工具

2.2. Hortonworks版本(HDP)

不拥有任何私有(非开源)修改地使用了100%开源Apache Hadoop的唯一提供商

管理工具

1. Ambari

创建、管理、监视 Hadoop 集群的整个生态圈(例如 Hive,Hbase,Sqoop,Zookeeper 等)

1.1. 发行版

  • Apache Ambari
  • Hortonworks Ambari

1.2. 体系结构

Ambari 自身也是一个分布式架构的软件,主要由 Ambari ServerAmbari Agent 组成。用户通过 Server 通知 Agent 安装对应的软件,Agent 会定时地发送各个机器每个软件模块的状态给 Server,最终这些状态信息会呈现在 Ambari GUI,方便用户了解到集群的各种状态,并进行相应的维护。

2. Cloudera Manager(CM)

2.1. 体系结构

  • Agent:安装在每台主机上。该代理负责启动和停止的过程,拆包配置,触发装置和监控主机。
  • Management Service:由一组执行各种监控,警报和报告功能角色的服务。
  • Database:存储配置和监视信息。通常情况下,多个逻辑数据库在一个或多个数据库服务器上运行。例如,Cloudera的管理服务器和监控角色使用不同的逻辑数据库。
  • Cloudera Repository:软件由Cloudera 管理分布存储库。
  • Clients:是用于与服务器进行交互的接口:
  • Admin Console :基于Web的用户界面与管理员管理集群和Cloudera管理。
  • API :与开发人员创建自定义的Cloudera Manager应用程序的API。

安装

1. 机器分配

hostname IP 功能 核数 磁盘(kb)
hadoop-nn1 10.200.255.1 Ambari和hdp安装 4 131754400
hadoop-nn2 10.200.255.2 Master节点 4 131754388
hadoop-nn3 10.200.255.3 Slave节点 4 131754388
hadoop-nn4 10.200.255.4 Slave节点 4 131754400

2. 配置hosts

2.1. 修改 /etc/sysconfig/network

修改本地计算机的计算机名称

1
2
3
4
5
[root@hadoop-nn1 etc]# vim /etc/sysconfig/network
# 启动时激活联网
NETWORKING=yes
# 主机名
HOSTNAME=hadoop-nn1

2.2. 修改 /etc/hosts

1
2
3
4
5
[root@hadoop-nn1 etc]# vim /etc/hosts
10.200.255.1 hadoop-nn1
10.200.255.2 hadoop-nn2
10.200.255.3 hadoop-nn3
10.200.255.4 hadoop-nn4

2.3. 修改 /etc/hostname

1
2
[root@hadoop-nn1 etc]# vim /etc/hostname
hadoop-nn1

3. 相关软件安装与配置

3.1. 安装 openssl

SSL(Open Secure Sockets Layer) 开放式安全套接层协议

1
2
3
4
# 检查是否安装
rpm -qa | grep openssl
# 安装
yum install openssl

3.2. 安装、检查和开启 ntp

时间同步服务

1
2
3
4
5
6
7
8
9
10
11
12
13
# 检查是否安装
rpm -qa | grep ntp
# 安装
yum install ntp ntpdate -y

# 查看是否开机自启
systemctl is-enabled ntpd

# 设置开机自启
systemctl enable ntpd

# 开启服务
systemctl start ntpd

3.3. 检查和关闭防火墙

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 查看是否是开机自动开启状态:disable 是开机不自启,enabled 是开机自启
[root@hadoop-nn1 etc]# systemctl is-enabled firewalld
disabled

# 查看防火墙状态
[root@hadoop-nn1 etc]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)

# 关闭开启防火墙
systemctl stop/start firewalld

# 关闭防火墙开机自动启动
systemctl disable firewalld

3.4. 检查和关闭SELinux

SELinux(Security-Enhanced Linux) 安全增强型 Linux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统

1
2
3
4
5
6
7
# 查看 SELinux 状态
[root@hadoop-nn1 etc]# sestatus
SELinux status: disabled

# 设置开机不可启动状态
[root@hadoop-nn1 etc]# vim /etc/selinux/config
SELINUX=disabled

3.5. 安装、检查和开启 httpd服务

1
2
3
4
5
6
7
8
9
10
11
12
13
# 检查是否安装
rpm -qa | grep httpd
# 安装
yum install httpd -y

# 查看是否开机自启
systemctl is-enabled httpd

# 开启服务
systemctl start httpd

# 设置开机自启
systemctl enable httpd

4. 配置机器之间ssh免密登录

4.1. 确定是否安装ssh,且是否开启服务

1
2
3
4
# 是否安装ssh
rpm -qa|grep ssh
# 是否开启服务
systemctl status sshd

4.2. 生成公钥私钥以及本机免密码登录

1
2
# 生成密钥
ssh-keygen -t rsa

打开隐藏文件夹.ssh,其中有 id_rsa(私钥) 和 id_rsa.pub(公钥) 两个文件

4.3. 将公钥 id_rsa.pub 复制到自己和其他机器

1
2
3
4
5
6
# 把本地主机的公钥复制到远程主机的 authorized_keys 文件上,该文件夹会自动建立
# 同时也会给远程主机的用户主目录(home) 、 ~/.ssh 、 ~/.ssh/authorized_keys 设置合适的权限
[root@hadoop-nn1 etc]# ssh-copy-id hadoop-nn1
[root@hadoop-nn1 etc]# ssh-copy-id hadoop-nn2
[root@hadoop-nn1 etc]# ssh-copy-id hadoop-nn3
[root@hadoop-nn1 etc]# ssh-copy-id hadoop-nn4

其他主机也需要相同操作