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

…Launch Install Wizard->

5.2 Name your cluster

…Next->

5.3 选择HDP软件栈

选择HDP2.4, 并在Advanced Repository Options中选择我们配置好的镜像仓库 Select Stack

 …Next->

5.4 Install Options

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

…Next->

5.5 Confirm hosts

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

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

提示需要关闭THP(参考文档1/参考文档2)

  • 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自动部署