Hadoop集群搭建
文章目录
注意:本文使用的镜像来自于Index of /centos/6/isos/ (sohu.com)
本文是很单纯的hadoop集群搭建,并没有涉及其余组件(flume,kafka等)
准备
- 三台虚拟机,名字分别为hadoop102,hadoop103,hadoop104
- 修改克隆虚拟机的静态IP
- 关闭防火墙
- 虚拟机的映射搭建好
- 配置好SSH
虚拟机以hadoop103为核心,脚本创建在hadoop103中
需要使用的几个脚本
在hadoop103的home下创建bin目录
[root@hadoop103 ~]$ mkdir bin
在bin目录下存储脚本
xsync脚本
xsync脚本用于向其他虚拟机分发文件
在bin目录下创建脚本xsync
vim xsync
脚本内容
#!/bin/bash
#验证参数
if(($#!=1))
then
echo 请传入要分发的单个文件!
exit;
fi
#获取分发文件的绝对路径
dirpath=$(cd -P `dirname $1`; pwd)
filename=$(basename $1)
echo "要分发的文件路径是:$dirpath/$filename"
#获取当前的用户名
user=$(whoami)
#分发,前提是集群中的机器都有当前分发文件所在的父目录
for((i=102;i<=104;i++))
do
echo -----------------------hadoop$i---------------------
rsync -rvlt $dirpath/$filename $user@hadoop$i:$dirpath
done
xcall脚本
xcall用于调动全部三台虚拟机,xcall + 命令语句 在三台虚拟机上全部执行
同样在bin目录下创建
vim xcall
脚本内容
#!/bin/bash
#验证参数
if(($#==0))
then
echo 请传入要执行的命令!
exit;
fi
echo "要执行的命令是:$@"
#批量执行
for((i=102;i<=104;i++))
do
echo -----------------------hadoop$i---------------------
ssh hadoop$i $@
done
在三台虚拟机上创建module,和soft目录
xcall mkdir /opt/module/
xcall mkdir /opt/soft
soft目录用于存放组件的压缩包
module用于存放解压缩后的组件
安装jdk
将jdk存放于soft目录中
在soft中解压到module目录下
[root@hadoop103 soft] `tar -zxvf **jdk压缩包的名字** -C /opt/module`
配置JDK环境变量
1、先获取JDK路径
[root@hadoop103 jdk1.8.0_144]$ pwd
/opt/module/jdk1.8.0_144
2、打开/etc/profile文件
[root@hadoop103 software]$ sudo vi /etc/profile
在profile文件末尾添加JDK路径
#JAVA_HOME
JAVA_HOME=/opt/module/jdk1.8.0_144
PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME
3、保存后退出
:wq
4、让修改后的文件生效
[root@hadoop103 jdk1.8.0_144]$ source /etc/profile
5、测试JDK是否安装成功
[root@hadoop103 jdk1.8.0_144]$ java -version
java version "1.8.0_144"
可能出现的问题
如果版本与安装的版本不同
[root@hadoop103 module]$ which java
若出现的路径不是/opt/module/jdk1.8.0_144/bin/java
输入
[root@hadoop103 module]$ rm -rf /usr/bin/java
[root@hadoop103 module]$ source /etc/profile
即可解决问题
以上完成后JDK即安装成功
6、分发
向其余虚拟机分发jdk
[root@hadoop103 module]$ xsync jdk1.8.0_144/
再分发/etc/profile
[root@hadoop103 module]$ xsync /etc/profile/`
继续在其余虚拟机上刷新
[root@hadoop103 module]$ source /etc/profile/
若其他虚拟机上也出现上述问题,也可按上述方法解决
也可用xcall直接全部更改
搭建hadoop集群
将hadoop的压缩包导入hadoop103中的soft文件中
在soft中解压缩到module中
[root@hadoop103 soft]$ tar -zxvf **hadoop压缩包的名字** -C /opt/module
需要配置的四个文件
进入hadoop中
[root@hadoop103 ~] $ cd /opt/module/hadoop-2.7.2/etc/hadoop
更改以下四个文件的配置
core-site.xml
[root@hadoop103 hadoop] $ vim core-site.xml
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop102:9000</value>
</property>
<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>
hfds-site.xml
[root@hadoop103 hadoop] $ vim hfds-site.xml
<!-- 指定Hadoop辅助名称节点主机配置 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop104:50090</value>
</property>
yarn-site.xml
[root@hadoop103 hadoop]$ vim yarn-site.xml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop103</value>
</property>
<!-- 日志聚集功能使能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 日志保留时间设置7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
mapred-site.xml
[root@hadoop103 hadoop]$ vim mapred-site.xml
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop102:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop102:19888</value>
</property>
<!--第三方框架使用yarn计算的日志聚集功能 -->
<property>
<name>yarn.log.server.url</name>
<value>http://hadoop102:19888/jobhistory/logs</value>
</property>
<!-- 指定MR运行在YARN上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
更改slaves文件
[root@hadoop103 hadoop]$ vim slaves
将内容改为
hadoop102
hadoop103
hadoop104
wq保存
分发
将hadoop-2.7.2分发给其他虚拟机
[root@hadoop103 module]$ xsync hadoop-2.7.2/
更改环境
[root@hadoop103 module]$ vim /etc/profile
添加
HADOOP_HOME=/opt/module/hadoop-2.7.2
将向PATH后添加
:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
在export后添加
HADOOP_HOME
分发/etc/profile
xsync /etc/profile
分别在三台虚拟机上刷新
source /etc/profile
格式化
在hadoop102上格式化
[root@hadoop102 module] $ hadoop namenode -format
启动集群
在hadoop103中启动
[root@hadoop103 hadoop-2.7.2]$ sbin/start-dfs.sh
[root@hadoop103 hadoop-2.7.2]$ sbin/start-yarn.sh
在浏览器中输入hadoop102:50070或hadoop103:8088即可