在Ubuntu14上搭建hdp2.4
1. 环境准备
硬件
Ubuntu 14.04 64bit * 3
node-server
- node1(192.168.10.51): 4核8G 500G
- node2(192.168.10.52): 2核4G 500G
- node3(192.168.10.53): 2核4G 500G
repo-server
- 192.168.0.2
软件
- Ambari-2.2.1.1
- HDP-2.4.0.0
- jdk-8u71-linux-x64.tar.gz
2. 部署镜像服务
我们需要的安装包都可以在 hortonworks 的仓库public-repo-1.hortonworks.com中找到, 但是为了提升效率, 我们采用本地镜像的方式安装.
在任意一台内网可以访问的服务器上部署镜像服务, 这里我们同样选择了一台Ubuntu服务器, 下面称为repo-server
2.1 部署nginx
镜像服务是一个http服务, 我们这里选择使用nginx来搭建
- ssh登录到repo-server, sudo到root用户
- 创建WebRoot目录: mkdir -p /mnt/repo/hadoop
- apt-get update
- apt-get install nginx
- 编辑配置文件: vim /etc/nginx/sites-enabled/default
# 加入如下配置
server {
listen 80;
server_name hdp-repo.tataufo.com;
root /mnt/repo/hadoop;
}
- 重启nginx: service nginx reload
2.2 下载安装包
从hortonworks的官方仓库中下载
- ssh登录到repo-server, sudo到root用户
- cd /mnt/repo/hadoop
- 下载Ambari: wget http://public-repo-1.hortonworks.com/ambari/ubuntu14/2.x/updates/2.2.1.1/ambari-2.2.1.1-ubuntu14.tar.gz
- 下载HDP: wget http://public-repo-1.hortonworks.com/HDP/ubuntu14/2.x/updates/2.4.0.0/HDP-2.4.0.0-ubuntu14-deb.tar.gz
- 下载HDP-UTILS: wget http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/ubuntu14/HDP-UTILS-1.1.0.20-ubuntu14.tar.gz
- 解压: tar xzvf ambari-2.2.1.1-ubuntu14.tar.gz && tar xzvf HDP-2.4.0.0-ubuntu14-deb.tar.gz && tar xzvf HDP-UTILS-1.1.0.20-ubuntu14.tar.gz
- mkdir -p ambari/ubuntu14/2.x/updates/2.2.1.1
- mv AMBARI-2.2.1.1/ubuntu14/[VERSION_NUMBER]/* ambari/ubuntu14/2.x/updates/2.2.1.1/
这一步是保证ambari/ubuntu14/2.x/updates/2.2.1.1/目录下结构如下:
ambaribn.list
ambari_latest.list
ambari_private.list
ambari_public.list
ambari_updates.list
build.id
build_metadata.txt
changelog.txt
db/
dists/
pool/
- rm -rf AMBARI-2.2.1.1
3. node-server配置
如无特殊说明, 每台node-server均进行如下配置
以root身份登录到node-server上 创建存放安装包的目录: mkdir /mnt/packages
3.1 Python
确保python版本不高于2.7.9(由于证书验证机制的不同)
3.2 JDK
hdp2.3已经开始支持jdk1.8, 使用jdk1.7的话版本不应低于1.7_67
我们这里使用jdk1.8.0_71
- 将jdk-8u71-linux-x64.tar.gz上传到/mnt/packages中
- cd /mnt/packages
- tar xzvf jdk-8u71-linux-x64.tar.gz
- mv jdk1.8.0_71 /usr/local/lib/
-
配置环境变量: vim /etc/profile
# 加入如下配置 export JAVA_HOME=/usr/local/lib/jdk1.8.0_71; export PATH=$PATH:$JAVA_HOME/bin; - source /etc/profile
3.3 主机名/防火墙/SELinux
- vim /etc/hostname, 分别将主机名修改为node1, node2, node3
- 关闭防火墙: ufw disable
- Ubuntu默认没有打开SElinux, 无须考虑
3.4 NTP时间同步服务
- apt-get install ntp
- service ntp status
3.5 hosts文件
修改hosts文件, 使node-server之间通过伪域名互相访问, 并且把repo-server的伪域名也加入: vim /etc/hosts
127.0.0.1 localhost
127.0.1.1 localhost.localdomain localhost
# The following lines are desirable for IPv6 capable hosts
e:1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
192.168.0.2 hdp-repo.tataufo.com
192.168.10.51 node1 node1.hadoop
192.168.10.52 node2 node2.hadoop
192.168.10.53 node3 node3.hadoop
注意: 这里不要添加形如 “127.0.1.1 node1”的配置, 否则会导致node1的50070端口只能在本机通过http://node1:50070访问, 从而导致其他组件无法正常启动
3.6 SSH无密码登录
采用Ambari来安装部署hadoop集群需要配置node-server间互相ssh无密码登录
- 运行ssh-keygen命令, 一直回车, 生成RSA密钥对
- 使用ssh-copy-id命令将公钥拷贝到其他几台node-server上: ssh-copy-id root@node1, 输入密码后即可
- 验证: ssh root@node1, 不需要输入密码代表配置成功
4. 部署Ambari-server
我们在node1上安装Ambari-server
4.1 配置镜像地址
需要在node1, node2, node3上都配置ambari的镜像地址
Ubuntu环境下需要配置apt-get的镜像源, 指向我们配置的repo-server
- wget -P /etc/apt/sources.list.d/ http://public-repo-1.hortonworks.com/ambari/ubuntu14/2.x/updates/2.2.1.1/ambari.list
- 修改为我们搭建的镜像仓库, vim /etc/apt/sources.list.d/ambari.list
deb http://hdp-repo.tataufo.com/ambari/ubuntu14/2.x/updates/2.2.1.1 Ambari main
- 更新加载镜像源: apt-get update, 如果报出如下错误:
W: GPG error: http://hdp-repo.tataufo.com Ambari InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY B9733A7A07513CAD
需要运行apt-key adv –keyserver keyserver.ubuntu.com –recv-keys B9733A7A07513CAD
- 确认配置成功: apt-cache pkgnames ambari
4.2 安装
- 以root身份ssh登录到node1服务器上
- 由于已经配置过了镜像地址, 直接使用apt-get即可安装: apt-get install ambari-server
4.3 配置并启动
- ambari-server setup, 除了jdk选择[3]Custom jdk后输入/usr/local/lib/jdk1.8.0_71之外, 一路回车即可
- 启动: ambari-server start
- 在浏览器输入node1:8080进入ambari管理页面, 默认用户名和密码: admin admin
5. 部署Hadoop
登录node1:8080, 进入ambari管理页面, 默认用户名和密码: admin admin
5.1启动部署向导

…Launch Install Wizard->
5.2 Name your cluster
…Next->
5.3 选择HDP软件栈
选择HDP2.4, 并在Advanced Repository Options中选择我们配置好的镜像仓库

…Next->
5.4 Install Options
设置集群中的主机列表, 并粘贴ambari-server所在主机(node1)的私钥

…Next->
5.5 Confirm hosts
这个界面展示了ambari在所有的node上安装ambari-agent的过程, 确保都是sucess, 如果是fail, 需要点击查看错误日志来解决错误

这里显示了3个警告, 点击查看

- vim /etc/init.d/disable-transparent-hugepages
#!/bin/sh
### BEGIN INIT INFO
# Provides: disable-transparent-hugepages
# Required-Start: $local_fs
# Required-Stop:
# X-Start-Before: mongod mongodb-mms-automation-agent
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Disable Linux transparent huge pages
# Description: Disable Linux transparent huge pages, to improve
# database performance.
### END INIT INFO
case $1 in
start)
if [ -d /sys/kernel/mm/transparent_hugepage ]; then
thp_path=/sys/kernel/mm/transparent_hugepage
elif [ -d /sys/kernel/mm/redhat_transparent_hugepage ]; then
thp_path=/sys/kernel/mm/redhat_transparent_hugepage
else
return 0
fi
echo 'never' > ${thp_path}/enabled
echo 'never' > ${thp_path}/defrag
unset thp_path
;;
esac
- chmod 755 /etc/init.d/disable-transparent-hugepages
- update-rc.d disable-transparent-hugepages defaults
关闭后确认没有其他警告
…Next->
5.6 Choose Services
选择需要安装的Hadoop生态圈组件, 如无特别需求, 全选即可

…Next->
5.7 Assign Masters
配置各组件的主节点, 默认即可

…Next->
5.8 Assign Slaves and Clients
配置各组件的从节点和clients

5.9 Customize Services
界面上显示了需要做自定义配置的组件, 挨个进行配置

HDFS
配置NameNode和DataNode的存储路径

需要注意的其他参数:
- Block replication: 即dfs.replication, hdfs每个block的副本个数
Hive
按照提示设置hive数据库的密码即可
Oozie
按照提示设置Oozie数据库的密码即可
Accumulo
设置Accumulo root密码, Instance secret
Knox
设置Knox Master Secret
SmartSense
设置SmartSense Account的信息
…Next->
5.10 Review And Deploy
等待ambari自动部署