基于Hadoop生态圈的数据仓库实践 —— 环境搭建

Posted wzy0623

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于Hadoop生态圈的数据仓库实践 —— 环境搭建相关的知识,希望对你有一定的参考价值。

二、安装Hadoop及其所需的服务
1. CDH安装概述

CDH的全称是Cloudera's Distribution Including Apache Hadoop,是Cloudera公司的Hadoop分发版本。有三种方式安装CDH:
. Path A - 通过Cloudera Manager自动安装
. Path B - 使用Cloudera Manager Parcels或Packages安装
. Path C - 使用Cloudera Manager Tarballs手工安装
不同方式的安装步骤总结如下:

步骤

 

 

 

步骤 1: 安装 JDK

Cloudera Manager Server、Management Service和CDH需要安装JDK。

有两个选项:

. 使用Cloudera Manager安装程序在集群中的所有主机的/usr/java下安装一个Oracle JDK的支持版本。

. 使用命令行在所有主机上安装一个Oracle JDK的支持版本,并且设置JAVA_HOME环境变量为JDK的安装目录。

步骤 2: 设置数据库

Cloudera Manager Server、Cloudera Management Service和某些CDH的可选服务需要安装、配置和启动数据库。

有两个选项:

. 使用Cloudera Manager安装程序安装、配置和启动一个内嵌的PostgreSQL数据库。

. 使用诸如yum这样的命令行包安装工具安装、配置和启动数据库。

 

Path A

Path B

Path

步骤 3: 安装Cloudera Manager服务器

在一台主机上安装和启动Cloudera Manager服务器。

使用Cloudera Manager安装程序安装服务器。需要该主机的sudo权限并能访问互联网。

使用Linux包安装命令(如yum)安装Cloudera Manager服务器。

修改数据库属性。

使用service命令启动Cloudera Manager服务器。

使用Linux命令解包,并且使用service命令启动服务。

步骤 4: 安装Cloudera Manager代理

在所有主机上安装并启动Cloudera Manager代理。

使用Cloudera Manager安装向导在所有主机上安装代理。

有两个选项:

. 使用Linux包安装命令(如yum)在所有主机上安装Cloudera Manager代理。

. 使用Cloudera Manager安装向导在所有主机上安装代理。

使用Linux命令在所有主机上解包并启动代理。

步骤 5: 安装CDH和服务

在所有主机上安装CDH及其服务。

使用Cloudera Manager安装向导安装CDH及其服务。

有两个选项:

. 使用Cloudera Manager安装向导安装CDH及其服务。

. 使用Linux包安装命令(如yum)在所有主机上安装CDH及其服务。

使用Linux命令在所有主机上解包,并使用service命令启动CDH及其服务。

步骤 6: 建立、配置并启动CDH和服务

在所有主机上配置并启动CDH及其服务。

使用Cloudera Manager安装向导给主机赋予角色并配置集群。许多配置是自动的。

使用Cloudera Manager安装向导给主机授予角色并配置集群。许多配置是自动的。

使用Cloudera Manager安装向导给主机赋予角色并配置集群。许多配置是自动的。也可以使用Cloudera Manager API管理一个集群,这对于脚本预配置部署是很有用的。

 2. 实验环境

主机信息:

主机名                      

IP地址                                              

CDH1

172.16.1.101

CDH2

172.16.1.102

CDH3

172.16.1.103

CDH4

172.16.1.104


硬件配置:
每台主机:CPU4核、内存8G、硬盘100G

软件版本:

名称                                                    

版本                                                                               

操作系统

CentOS release 6.4 (Final) 64位

JDK

1.7.0_80

数据库

mysql 5.6.14

JDBC

MySQL Connector Java 5.1.38

Cloudera Manager

5.7.0

CDH

5.7.0


3. 安装配置
(1)安装前准备(都是使用root用户在集群中的所有4台主机配置)
. 从以下地址下载所需要的安装文件
http://archive.cloudera.com/cm5/cm/5/cloudera-manager-el6-cm5.7.0_x86_64.tar.gz
http://archive.cloudera.com/cdh5/parcels/5.7/CDH-5.7.0-1.cdh5.7.0.p0.45-el6.parcel
http://archive.cloudera.com/cdh5/parcels/5.7/CDH-5.7.0-1.cdh5.7.0.p0.45-el6.parcel.sha1
http://archive.cloudera.com/cdh5/parcels/5.7/manifest.json
  • 使用下面的命令检查OS依赖包,xxxx换成包名
rpm -qa | grep xxxx
以下这些包必须安装:
chkconfig
python (2.6 required for CDH 5)
bind-utils
psmisc
libxslt
zlib
sqlite
cyrus-sasl-plain
cyrus-sasl-gssapi
fuse
portmap (rpcbind)
fuse-libs
redhat-lsb
  • 配置域名解析
vi /etc/hosts
# 添加如下4行内容
172.16.1.101 cdh1
172.16.1.102 cdh2
172.16.1.103 cdh3
172.16.1.104 cdh4
  • 安装JDK
CDH5推荐的JDK版本是1.7.0_67、1.7.0_75、1.7.0_80,这里安装1.7.0_80
注意:所有主机要安装相同版本的JDK;安装目录为/usr/java/jdk-version
mkdir /usr/java/
mv jdk-7u80-linux-x64.tar.gz /usr/java/
cd /usr/java/
tar -zxvf jdk-7u80-linux-x64.tar.gz
chown -R root:root jdk1.7.0_80/
vi /etc/profile.d/java.sh
# 添加如下3行内容
export JAVA_HOME=/usr/java/jdk1.7.0_80
export CLASSPATH=.:$JAVA_HOME/jre/lib/*:$JAVA_HOME/lib/*
export PATH=$PATH:$JAVA_HOME/bin
# 使环境变量生效
source /etc/profile.d/java.sh
  • 安装、配置并启动NTP服务
yum install ntp
chkconfig ntpd on
ntpdate -u 202.112.29.82
vi /etc/ntp.conf
# 添加如下8行内容
driftfile /var/lib/ntp/drift
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict -6 ::1
server 202.112.29.82
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
# 启动NTP服务
service ntpd start
  • 建立CM用户
useradd --system --home=/opt/cm-5.7.0/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
usermod -a -G root cloudera-scm
echo USER=\\"cloudera-scm\\" >> /etc/default/cloudera-scm-agent
echo "Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin" >> /etc/sudoers
  • 安装配置MySQL数据库(为了后面配置方便,这里每个主机都装了)
rpm -ivh MySQL-5.6.14-1.el6.x86_64.rpm
vi /etc/profile.d/mysql.sh
# 添加如下2行内容
export MYSQL_HOME=/home/mysql/mysql-5.6.14
export PATH=$PATH:$MYSQL_HOME/bin
# 使环境变量生效
source /etc/profile.d/mysql.sh
# 修改root密码
mysqladmin -u root password
# 编辑配置文件
vi /etc/my.cnf
# 内容如下
[mysqld]
transaction-isolation = READ-COMMITTED
log_bin=/data/mysql_binary_log
binlog_format = mixed
innodb_flush_log_at_trx_commit  = 2
innodb_flush_method = O_DIRECT
key_buffer = 16M
key_buffer_size = 32M
max_allowed_packet = 32M
thread_stack = 256K
thread_cache_size = 64
query_cache_limit = 8M
query_cache_size = 64M
query_cache_type = 1
max_connections = 550
read_buffer_size = 2M
read_rnd_buffer_size = 16M
sort_buffer_size = 8M
join_buffer_size = 8M
innodb_flush_log_at_trx_commit  = 2
innodb_log_buffer_size = 64M
innodb_buffer_pool_size = 4G
innodb_thread_concurrency = 8
innodb_log_file_size = 512M
[mysqld_safe]
log-error=/data/mysqld.err
pid-file=/data/mysqld.pid
sql_mode=STRICT_ALL_TABLES

# 添加开机启动
chkconfig mysql on
# 启动MySQL
service mysql restart
# 根据需要建立元数据库
mysql -u root -p -e "create database hive DEFAULT CHARACTER SET utf8;create database rman DEFAULT CHARACTER SET utf8;create database oozie DEFAULT CHARACTER SET utf8;grant all on *.* TO 'root'@'%' IDENTIFIED BY 'mypassword';"
  • 安装MySQL JDBC驱动
tar -zxvf mysql-connector-java-5.1.38.tar.gz 
cp ./mysql-connector-java-5.1.38/mysql-connector-java-5.1.38-bin.jar /usr/share/java/mysql-connector-java.jar
  • 配置免密码ssh(这里配置了任意两台机器都免密码)
# 分别在四台机器上生成密钥对:
cd ~
ssh-keygen -t rsa
# 然后一路回车
# 在cdh1上执行:
cd ~/.ssh/
ssh-copy-id cdh1
scp /root/.ssh/authorized_keys cdh2:/root/.ssh/
# 在cdh2上执行:
cd ~/.ssh/
ssh-copy-id cdh2
scp /root/.ssh/authorized_keys cdh3:/root/.ssh/
#在cdh3上执行:
cd ~/.ssh/
ssh-copy-id cdh3
scp /root/.ssh/authorized_keys cdh4:/home/grid/.ssh/
#在cdh4上执行:
cd ~/.ssh/
ssh-copy-id cdh4
scp /root/.ssh/authorized_keys cdh1:/root/.ssh/
scp /root/.ssh/authorized_keys cdh2:/root/.ssh/
scp /root/.ssh/authorized_keys cdh3:/root/.ssh/

(2)在cdh1上安装Cloudera Manager
tar -xzvf cloudera-manager*.tar.gz -C /opt/
# 建立cm数据库
/opt/cm-5.7.0/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -uroot -pmypassword --scm-host localhost scm scm scm
# 配置cm代理
vi /opt/cm-5.7.0/etc/cloudera-scm-agent/config.ini 
# 将cm主机名改为cdh1
server_host=cdh1
# 将Parcel相关的三个文件拷贝到/opt/cloudera/parcel-repo
cp CDH-5.7.0-1.cdh5.7.0.p0.45-el6.parcel /opt/cloudera/parcel-repo/
cp CDH-5.7.0-1.cdh5.7.0.p0.45-el6.parcel.sha1 /opt/cloudera/parcel-repo/
cp manifest.json /opt/cloudera/parcel-repo/
# 改名
mv /opt/cloudera/parcel-repo/CDH-5.7.0-1.cdh5.7.0.p0.45-el6.parcel.sha1 /opt/cloudera/parcel-repo/CDH-5.7.0-1.cdh5.7.0.p0.45-el6.parcel.sha
# 修改属主
chown -R cloudera-scm:cloudera-scm /opt/cloudera/
chown -R cloudera-scm:cloudera-scm /opt/cm-5.7.0/
# 将/opt/cm-5.7.0目录拷贝到其它三个主机
scp -r -p /opt/cm-5.7.0 cdh2:/opt/
scp -r -p /opt/cm-5.7.0 cdh3:/opt/
scp -r -p /opt/cm-5.7.0 cdh4:/opt/

(3)在每个主机上建立/opt/cloudera/parcels目录,并修改属主
mkdir -p /opt/cloudera/parcels
chown cloudera-scm:cloudera-scm /opt/cloudera/parcels

(4)在cdh1上启动cm server
/opt/cm-5.7.0/etc/init.d/cloudera-scm-server start
# 此步骤需要运行一些时间,用下面的命令查看启动情况
tail -f /opt/cm-5.7.0/log/cloudera-scm-server/cloudera-scm-server.log

(5)在所有主机上启动cm agent
mkdir /opt/cm-5.7.0/run/cloudera-scm-agent
chown cloudera-scm:cloudera-scm /opt/cm-5.7.0/run/cloudera-scm-agent
/opt/cm-5.7.0/etc/init.d/cloudera-scm-agent start

(6)登录cm控制台,安装配置CDH5及其服务
打开控制台
http://172.16.1.101:7180/
页面如下图所示。