Hadoop完全分布式部署
一、 硬件描述
3台物理机,一台Master二台Slave(Slave01,Slave02)
二、 硬件环境准备
1.修改主机名
Vi /etc/sysconfig/network修改hostname为对应的
2.关闭selinux
Vi /etc/sysconfig/selinux 修改enforing 为disabled
3.关闭防火墙
Service iptables stop
4.修改本地host文件
Vi /etc/hosts每台机器都要配置
例子:
192.168.6.210 Master
192.168.6.211 Slave01
192.168.6.212 Slave02
以上每台机器都要修改
5.设置ssh免密登陆
设置master节点和两个slave节点之间的双向ssh免密通信,下面以master节点ssh免密登陆slave节点设置为例,进行ssh设置介绍(以下操作均在master机器上操作):
首先生成Master的rsa密钥:
s
s
h
−
k
e
y
g
e
n
−
t
r
s
a
设
置
全
部
采
用
默
认
值
进
行
回
车
将
生
成
的
r
s
a
追
加
写
入
授
权
文
件
:
ssh-keygen -t rsa 设置全部采用默认值进行回车 将生成的rsa追加写入授权文件:
ssh−keygen−trsa设置全部采用默认值进行回车将生成的rsa追加写入授权文件:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
给授权文件权限:
c
h
m
o
d
600
/
.
s
s
h
/
a
u
t
h
o
r
i
z
e
d
k
e
y
s
进
行
本
机
s
s
h
测
试
:
chmod 600 ~/.ssh/authorized_keys 进行本机ssh测试:
chmod600 /.ssh/authorizedkeys进行本机ssh测试:ssh master正常免密登陆后所有的ssh第一次都需要密码,此后都不需要密码
将master上的authorized_keys传到slave1
sudo scp ~/.ssh/id_rsa.pub hadoop@slave1:~/
登陆到slave1操作:$ssh slave1输入密码登陆
c
a
t
/
i
d
r
s
a
.
p
u
b
>
>
/
.
s
s
h
/
a
u
t
h
o
r
i
z
e
d
k
e
y
s
修
改
a
u
t
h
o
r
i
z
e
d
k
e
y
s
权
限
:
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys 修改authorized_keys权限:
cat /idrsa.pub>> /.ssh/authorizedkeys修改authorizedkeys权限:chmod 600 ~/.ssh/authorized_keys
退出slave1:
e
x
i
t
进
行
免
密
s
s
h
登
陆
测
试
:
exit 进行免密ssh登陆测试:
exit进行免密ssh登陆测试:ssh slave1
到此硬件环境准备好
三、 软件安装
1.java环境安装
执行命令rpm -ivh jdk-8u131-linux-x64.rpm
配置环境变量
vi /etc/profile
在该profile文件中最下面添加:
export JAVA_HOME=/usr/java/jdk1.8.0_131
export PATH=
P
A
T
H
:
PATH:
PATH:JAVA_HOME/bin
2.Hadoop安装配置
2.1 Hadoop安装
首先在master节点进行hadoop安装配置,之后使用scp传到slave1和slave2。
下载Hadoop二进制文件到masterhadoop-2.8.4.tar.gz
解压文件
$tar –zxvf ~/hadoop-2.8.4.tar.gz
移动文件到自己规定的目录
$mv ~/hadoop-2.8.4 /opt/
2.2 Hadoop的maste节点配置
配置hadoop的配置文件core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml slaves(都在/opt/hadoop-2.8.4/etc/hadoop文件夹下)
$cd /opt/hadoop-2.8.4/etc/hadoop
$vim core-site.xml其他文件相同,以下为配置文件内容:
1.core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hadoop/hadoop/tmp</value>
</property>
</configuration>
2.hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hadoop/hadoop/tmp/dfs/data</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
</configuration>
3.mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
4.yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>Master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>Master:19888</value>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
</configuration>
5.slaves –对应slave机器的hostname
Slave01
Slave02
2.3 Hadoop的其他节点配置
此步骤的所有操作仍然是在master节点上操作,以master节点在slave1节点上配置为例
复制hadoop文件至slave01:$scp -r /opt/hadoop-2.8.4root@Slave01:/opt/
2.4 Hadoop环境变量配置
vi /etc/profile
添加行(每个节点都需要此步操作,以master节点为例):
#hadoop environment vars
export HADOOP_HOME=/home/hadoop/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
保存环境变量生效:source /etc/profile
2.5 Hadoop启动
格式化namenode:
h
a
d
o
o
p
n
a
m
e
n
o
d
e
−
f
o
r
m
a
t
启
动
h
a
d
o
o
p
:
hadoop namenode -format 启动hadoop:
hadoopnamenode−format启动hadoop:start-all.sh
master节点查看启动情况:$jps
slave1节点查看启动情况:$jps
slave2节点查看启动情况:$jps
看到以上结果证明hadoop配置成功
2.6启动history-server
Hadoop启动jobhistoryserver来实现web查看作业的历史运行情况,由于在启动hdfs和Yarn进程之后,jobhistoryserver进程并没有启动,需要手动启动,
启动的方法是:
mr-jobhistory-daemon.sh start historyserver
3.Hive安装(本地数据库存放元数据模式)
3.1.下载和解压安装包
apache-hive-2.3.3-bin.tar.gz
tar xvf apache-hive-2.3.2-bin.tar.gz
3.2.启动hdfs,为hive创建文件夹并授权,用于数据存储
hdfs dfs -mkdir -p /user/hive/{warehouse,tmp,log}
hdfs dfs -chmod -R 777 /user/hive/{warehouse,tmp,log}
3.3.修改hive相关配置文件
hive所有配置文件位于conf目录下
1)、修改hive-env.sh
export HADOOP_HOME=/opt/hadoop-2.8.4
export HIVE_CONF_DIR=/opt/apache-hive-2.3.3/conf
2)、修改hive-site.xml
hive.exec.scratchdir
/user/hive/tmp
hive.metastore.warehouse.dir
/user/hive/warehouse
hive.querylog.location
/user/hive/log
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hmetastore?createDatabaseIfNotExist=true&characterEncoding=UTF-8&useSSL=false</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
创建hive tmp文件目录:
mkdir /opt/apache-hive-2.3.3/tmp
并修改hive-site.xml:
把该文件中所有的{system:java.io.tmpdir} 改为 /part1/apache-hive-2.3.2-bin/tmp
把该文件中所有的{system:user.name} 改为 {user.name}
3.4配置hive环境变量
root用户执行:vim /etc/profile
export HIVE_HOME=/opt/apache-hive-2.3.3
export HIVE_CONF=
H
I
V
E
H
O
M
E
/
c
o
n
f
e
x
p
o
r
t
H
C
A
T
H
O
M
E
=
HIVE_HOME/conf export HCAT_HOME=
HIVEHOME/confexportHCATHOME=HIVE_HOME/hcatalog
export PATH=
H
I
V
E
H
O
M
E
/
b
i
n
:
HIVE_HOME/bin:
HIVEHOME/bin:PATH
使修改生效:source /etc/profile
3.5.下载mysql驱动,并将驱动放到/opt/apache-hive-2.3.3/lib
3.6.初始化hive
schematool -dbType mysql –initSchema
3.7.启动hive server2以便通过hive jdbc来访问hive
启动方法有两种:
1)、./bin hive --service hiveserver2 &
2)、./bin hiveserver2 &
hiveserver默认端口10000。
修改默认端口,更改hive-site.xml的配置属性:hive.server2.thrift.port
4.安装sqoop-1.4.7
4.1 下载解压sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz
tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz
解压后复制到/opt/sqoop
mv sqoop-1.4.7.bin__hadoop-2.6.0/ /opt/sqoop
下载oracle的jdbc驱动ojdbc6.jar到/opt/sqoop/lib
4.2 配置环境变量
vi /etc/profile 设置以下内容
#sqoop
export SQOOP_HOME=/opt/sqoop
export PATH=
P
A
T
H
:
PATH:
PATH:SQOOP_HOME/bin
配置后执行source /etc/profile生效
4.3复制/opt/sqoop/conf/sqoop-env-template.sh为sqoop-env.sh
进入/opt/sqoop/conf目录
cp sqoop-env-template.sh sqoop-env.sh
添加相关配置
vi sqoop-env.sh
#Setpath to where bin/Hadoop is available
export HADOOP_COMMON_HOME=/opt/hadoop-2.8.4
#Setpath to where hadoop-*-core.jar isavailable
export HADOOP_MAPRED_HOME=/opt /hadoop-2.8.4
#setthe path to where bin/Hbase isavailable
#export HBASE_HOME=/opt/cdh5/hbase //未安装可以不配置
#Setthe path to where bin/Hive is available
export HIVE_HOME= /opt/apache-hive-2.3.3
#Setthe path for where zookeper config diris
#export ZOOCFGDIR= /opt/zookeeper //未安装可以不配置
4.4.测试sqoop
sqoop version
安装成功显示sqoop版本
将java jdbc ojdbc6.jar 驱动放到
S
Q
O
O
P
H
O
M
E
/
l
i
b
下
s
q
o
o
p
l
i
s
t
−
t
a
b
l
e
s
−
−
c
o
n
n
e
c
t
j
d
b
c
:
o
r
a
c
l
e
:
t
h
i
n
:
@
192.168.6.61
:
1521
:
h
i
s
−
−
u
s
e
r
n
a
m
e
c
h
r
i
p
−
−
p
a
s
s
w
o
r
d
r
q
f
运
行
该
命
令
显
示
c
h
r
i
p
所
有
数
据
表
到
此
s
q
o
o
p
安
装
完
成
注
意
:
h
i
v
e
+
s
q
o
o
p
j
a
c
k
s
o
n
因
版
本
不
一
致
导
致
j
a
v
a
.
l
a
n
g
.
N
o
S
u
c
h
M
e
t
h
o
d
E
r
r
o
r
:
c
o
m
.
f
a
s
t
e
r
x
m
l
.
j
a
c
k
s
o
n
.
d
a
t
a
b
i
n
d
.
O
b
j
e
c
t
M
a
p
p
e
r
.
将
SQOOP_HOME/lib 下 sqoop list-tables --connect jdbc:oracle:thin:@192.168.6.61:1521:his --username chrip --password rqf 运行该命令 显示chrip所有数据表 到此sqoop安装完成 注意: hive+sqoop jackson因版本不一致导致java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.ObjectMapper. 将
SQOOPHOME/lib下sqooplist−tables−−connectjdbc:oracle:thin:@192.168.6.61:1521:his−−usernamechrip−−passwordrqf运行该命令显示chrip所有数据表到此sqoop安装完成注意:hive+sqoopjackson因版本不一致导致java.lang.NoSuchMethodError:com.fasterxml.jackson.databind.ObjectMapper.将SQOOP_HOME/lib/jackson*.jar 文件bak,再把$HIVE_HOME/lib/jackson*.jar 拷贝至 $SQOOP_HOME/lib 目录中
mr-jobhistory-daemon.sh start historyserver
启动jobhistory