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
fs.default.name
hdfs://master:9000
hadoop.tmp.dir
file:/home/hadoop/hadoop/tmp
2.hdfs-site.xml
dfs.replication
2
dfs.namenode.name.dir
file:/home/hadoop/hadoop/tmp/dfs/name
dfs.datanode.data.dir
file:/home/hadoop/hadoop/tmp/dfs/data
dfs.namenode.secondary.http-address
master:9001
3.mapred-site.xml
mapreduce.framework.name
yarn
4.yarn-site.xml
yarn.resourcemanager.hostname
master
mapreduce.jobhistory.address
Master:10020
mapreduce.jobhistory.webapp.address
Master:19888
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.log-aggregation-enable
true
yarn.log-aggregation.retain-seconds
604800
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
javax.jdo.option.ConnectionURL
jdbc:mysql://localhost:3306/hmetastore?createDatabaseIfNotExist=true&characterEncoding=UTF-8&useSSL=false
javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver
javax.jdo.option.ConnectionUserName
root
javax.jdo.option.ConnectionPassword
123456
创建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