Hadoop Apache 2.7.2 安装教程

本文介绍Hadoop Apache2.7.2的安装说明,为前序文章[大数据]数据仓库的搭建的辅助文档

1.JDK安装

  hadoop的功能运行需要的JDK版本在1.7以上。所以先要查询JDK的版本是否在1.7以上。
1.查询方法:

rpm -ga | grep java

2.若不是,卸载,并安装jdk1.7以上版本

sudu rpm -e 软件包

如何对当前用户获取root权限。

jdk-8u144-linux-x64.tar安装包
链接:https://pan.baidu.com/s/10-Vxjw3PgJrgOcXd4b14oA
提取码:kqk6

3.进入到JDK的软件包目录,解压JDK,

笔者这里在/opt目录下创建了一个module目录,专门放各种软件

tar -zxvf jdk-8u144-linux-x64.tar.gz -C /opt/module/

4.配置JDK的环境变量
(1)获取JDK的路径:

pwd

/opt/module/jdk1.8.0_144

(2)打开/etc/profile.d/env.sh.

sudo vim /etc/profile.d/env.sh

在env.sh中添加JDK路径

#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_144
export PATH= P A T H : PATH: JAVA_HOME/bin

注:很多人这里配置的环境变量目录是/etc/profile的文件。两者的区别是/etc/profile.d目录下的文件在之后集群ssh到其他节点后会直接加载。避免了之后ssh到其他节点要重新刷新配置文件
(3) 刷新配置文件

source /etc/profile

(4)测试JDK是否安装成功

java -version

2.安装Hadoop

Hadoop下载地址:https://archive.apache.org/dist/hadoop/common/hadoop-2.7.2/
1.将hadoop-2.7.2.tar.gz导入到linux
2.解压hadoop-2.7.2.tar.gz

tar -zxvf hadoop-2.7.2.tar.gz -C /opt/module/

3.配置hadoop的环境变量
(1)获取hadoop的安装路径

pwd

/opt/module/hadoop-2.7.2

(2)打开/etc/profile.d/env.sh文件

sudo vim /etc/profile.d/env.sh

(3)在文件末尾加上Hadoop路径

#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.7.2
export PATH= P A T H : PATH: HADOOP_HOME/bin
export PATH= P A T H : PATH: HADOOP_HOME/sbin

(4)刷新配置文件让文件生效

source /etc/profile

(5)测试Hadoop是否安装成功

hadoop version

3.完全分布式环境配置

安装前确认:

  1. 确定客户机的台数(关闭防火墙,静态ip,主机名),笔者为了测试简便,使用3台客户机,分别为hadoop111,hadoop112,hadoop113
  2. 安装JDK。参照上面
  3. 配置环境变量。参照上面
  4. 安装Hadoop。参照上面
  5. 配置集群
  6. 设置单点启动
  7. 配置ssh
  8. 群起测试集群

(1)编写集群分发脚本
  ①在家目录下创建bin目录,并在bin目录下创建分发脚本xsync

[ziyang@hadoop111 ~]$ mkdir bin
[ziyang@hadoop111 ~]$ cd bin/
[ziyang@hadoop111 bin]$ vi xsync

  ②在脚本文件中编写分发代码

#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if ((pcount==0)); then
echo no args;
exit;
fi

#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname

#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir

#4 获取当前用户名称
user=`whoami`

#5 循环
for host in hadoop111 hadoop112 hadoop113
do
    echo ------------------- $host --------------
    rsync -av $pdir/$fname $user@$host:$pdir
done

  ③修改权限

[ziyang@hadoop111 bin]$ chmod 777 xsync

  ④测试脚本

[ziyang@hadoop111 bin]$ xsync xsync

(2)配置SSH无秘钥登录
简单叙述:进入家目录的.ssh目录
①生成公钥和私钥:

[ziyang@hadoop111 .ssh]$ ssh-keygen -t rsa

然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)

②将公钥拷贝到要免密登录的目标机器上
[ziyang@hadoop111 .ssh]$ ssh-copy-id hadoop111
[ziyang@hadoop111 .ssh]$ ssh-copy-id hadoop112
[ziyang@hadoop111 .ssh]$ ssh-copy-id hadoop113

注意:
还需要在hadoop112上采用atguigu账号配置一下无密登录到hadoop111、hadoop112、hadoop113服务器上。
hadoop113同理

(3)集群规划
①在搭集群前,首先要对集群有一个详细的规划。
注意:NameNode和SecondaryNameNode还有ResourceManager不要安装在同一台服务器
所以对于3台机器的集群规划

hadoop111 hadoop112 hadoop113
HDFS NameNode、DateNode DateNode SecondaryNameNode、DateNode
YARN NodeManager ResourceManager、NodeManager NodeManager

②核心文件配置
核心文件的配置一共有
core-site.xml
hdfs-site.xml
yarn-site.xml
mapred-site.xml

hadoop-env.sh
yarn-env.sh
mapred-env.sh

slaves
1)进入hadoop的配置目录

[ziyang@hadoop111 ~]$ cd /opt/module/hadoop-2.7.2/etc/hadoop/

2)配置核心配置文件core-site.xml
在该文件中编写如下配置

<configuration>
<!-- 指定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>
</configuration>

3)配置HDFS配置文件hdfs-site.xml与hadoop-env.sh
3.1配置hdfs-site.xml
在该文件中编写如下配置

<configuration>
<property>
		<name>dfs.replication</name>
		<value>3</value>
</property>

<!-- 指定Hadoop辅助名称节点主机配置 -->
<property>
      <name>dfs.namenode.secondary.http-address</name>
      <value>hadoop113:50090</value>
</property>
</configuration>

3.2配置hadoop-env.sh

仔细找,在如下的信息下面
# The java implementation to use.
在下一行去掉注释,加上JDK的路径

export JAVA_HOME=/opt/module/jdk1.8.0_144

4)配置Yarn配置文件yarn-site.xml与yarn-env.sh
4.1配置yarn-site.xml文件
在该文件中编写如下配置

<configuration>
<!-- Reducer获取数据的方式 -->
<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
</property>

<!-- 指定YARN的ResourceManager的地址 -->
<property>
		<name>yarn.resourcemanager.hostname</name>
		<value>hadoop112</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>
</configuration>

4.2配置yarn-env.sh文件

仔细找,在如下信息下面
# some Java parameters
在下一行去掉注释,加上JDK路径

export JAVA_HOME=/opt/module/jdk1.8.0_144

5)配置MapReduce配置文件中mapred-site.xml与mapred-env.sh
5.1配置mapred-site.xml

将mapred-site.xml的后缀名去掉
mv mapred-site.xml.template mapred-site.xml

<configuration>
<!-- 指定MR运行在Yarn上 -->
<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
</property>

<!-- 历史服务器端地址 -->
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>hadoop102:10020</value>
</property>

<!-- 历史服务器web端地址 -->
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>hadoop102:19888</value>
</property>
</configuration>

5.2配置mapred-env.sh

还是一样配置JDK路径
export JAVA_HOME=/opt/module/jdk1.8.0_144

6)配置salaves
在文件中加入客户端的名字

hadoop111
hadoop112
hadoop113

注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。

(4) 分别在hadoop112、hadoop113的/opt目录下创建module文件夹,并修改所有者和所有者组为你的用户名

[ziyang@hadoop112 opt]$ sudo mkdir module
[ziyang@hadoop112 opt]$ sudo chown atguigu:atguigu module/
[ziyang@hadoop113 opt]$ sudo mkdir module
[ziyang@hadoop113 opt]$ sudo chown atguigu:atguigu module/

分发JDK文件与Hadoop文件

xsync /opt/module/hadoop-2.7.2/
xsync jdk1.8.0_144/

在其他的客户端集群配置好配置文件
(5)群启集群
1)如果集群是第一次启动,需要格式化NameNode(注意格式化之前,一定要先停止上次启动的所有namenode和datanode进程,然后再删除data和log数据)

[ziyang@hadoop111 hadoop-2.7.2]$ bin/hdfs namenode -format

2)启动HDFS

[ziyang@hadoop111 hadoop-2.7.2]$ sbin/start-dsf.sh

3)启动Yarn

因为yarn配置在hadoop112所以要去hadoop112启动

[ziyang@hadoop112 hadoop-2.7.2]$ sbin/start-yarn.sh

4.支持LZO压缩配置

(1)hadoop本身并不支持lzo压缩,故需要使用twitter提供的hadoop-lzo开源组件。hadoop-lzo需依赖hadoop和lzo进行编译。
以下是编译好的Lzo压缩文件

链接:https://pan.baidu.com/s/1b46cClcMlruI3FYViM_eVw
提取码:nkzh

(2)直接将编译好的jar包放入hadoop-2.7.2/share/hadoop/common/
并同步到hadoop112,hadoop113

[ziyang@hadoop112 common]$ xsync hadoop-lzo-0.4.20.jar

(3)在core-site.xml中增加支持LZO压缩

<configuration>
<property>
<name>io.compression.codecs</name>
<value>
org.apache.hadoop.io.compress.GzipCodec,
org.apache.hadoop.io.compress.DefaultCodec,
org.apache.hadoop.io.compress.BZip2Codec,
org.apache.hadoop.io.compress.SnappyCodec,
com.hadoop.compression.lzo.LzoCodec,
com.hadoop.compression.lzo.LzopCodec
</value>
</property>

<property>
    <name>io.compression.codec.lzo.class</name>
    <value>com.hadoop.compression.lzo.LzoCodec</value>
</property>
</configuration>

同步到hadoop112,hadoop113

[ziyang@hadoop112 hadoop]$ xsync core-site.xml

(4)启动集群

LZO压缩文件可切片性的特性依赖于启索引,所以,在分析LZO文件的时候我们都要手动为其创建索引

[ziyang@hadoop112 module]$ hadoop jar /opt/module/hadoop-2.7.2/share/hadoop/common/hadoop-lzo-0.4.20.jar  com.hadoop.compression.lzo.DistributedLzoIndexer 文件在HDFS上的路径

5.HDFS扩容配置

有需要留言更新

6.HDFS基准测试

此内容用于测试HDFS的读写性能,PC端请量力而行可以跳过
(1)测试HDFS写的性能
 测试内容:向HDFS集群写100个128M的文件

hadoop jar /opt/module/hadoop-2.7.2/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.7.2-tests.jar TestDFSIO -write -nrFiles 100 -fileSize 128MB

(2)测试HDFS读的性能
emsp;测试内容:向HDFS集群读100个128M的文件

hadoop jar /opt/module/hadoop-2.7.2/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.7.2-tests.jar TestDFSIO -read -nrFiles 100 -fileSize 128MB

(3)删除测试生成数据

hadoop jar /opt/module/hadoop-2.7.2/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.7.2-tests.jar TestDFSIO -clean

7.Hadoop参数调优

有需要留言更新

发布了4 篇原创文章 · 获赞 0 · 访问量 380

猜你喜欢

转载自blog.csdn.net/Bryce_Loski/article/details/105082221
今日推荐