Ubuntu16.04下Hadoop的本地安装与配置

Ubuntu16.04下Hadoop的本地安装与配置
对于博文内容不清楚或者有问题,能够加我qq239821429。
java

1、系统环境

os : Ubuntu 16.04 LTS 64bit
jdk : 1.8.0_161
hadoop : 2.6.4
部署时使用的用户名为hadoop,下文中须要使用用户名的地方请更改成本身的用户名。node

hadoop环境软件安装包百度云盘下载地址:
连接:https://pan.baidu.com/s/1TqgtCH3sP9FYadY0hZB2Eg
提取码:55z5

Ubuntu 16.04 LTS 64bit镜像文件百度云盘下载地址:
连接:https://pan.baidu.com/s/1YnnJKzjh7lawFQQ31fBpqA
提取码:m61j
linux

准备工具
VMware Workstation:建立虚拟机
FileZilla :FTP工具
SecureCRT :SSH远程链接虚拟机web

硬件准备
1.根据hadoop部署方式不一样,须要的服务器个数不一样。
部署方式为:单机模式,伪分布模式,彻底分布式模式
Hadoop100–>单机模式,一台机器
Hadoop101–>伪分布模式,一台机器
彻底分布式模式至少须要三台服务器,以下:
Hadoop102
Hadoop103
Hadoop104shell

建议虚拟机配置:
在这里插入图片描述apache

三种运行模式的区别为:
单机(非分布式)模式
这种模式在一台单机上运行,没有分布式文件系统,而是直接读写本地操做系统的文件系统,通常仅用于本地MR程序的调试
伪分布式运行模式
这种模式也是在一台单机上运行,但用不一样的Java进程模仿分布式运行中的各种结点
彻底分布式模式
真正的分布式,由3个及以上的实体机或者虚拟机组件的机群vim

2、安装步骤

1.修改root密码

sudo passwd root

2.安装并配置ssh

2.1 安装ssh

输入命令: $ sudo apt-get install openssh-server ,安装完成后使用命令 $ ssh localhost 登陆本机。首次登陆会有提示,输入yes,接着输入当前用户登陆电脑的密码便可。bash

2.2 配置SSH root登陆

默认状况下,ssh不支持root 用户,须要修改配置。服务器

vi   /etc/ssh/sshd_config

把其中的“PermitRootLogin prohibit-password” 修改成“PermitRootLogin yes”网络

重启服务器:reboot

2.3 配置静态IP

1.先中止Network-manager的服务

sudo service network-manager stop

2.修改/etc/network/interfaces配置文件

sudo vi /etc/network/interfaces

在文件中加入下面内容:

auto ens33
iface ens33 inet static
address 192.168.1.20 
netmask 255.255.255.0 
gateway 192.168.1.1
dns-nameservers 1114.114.114.114

注:在配置以前,先查询当前IP和DNS
在window cmd中使用ipconfig查询。
注意配置的虚拟机ip要和本机在同一网段,并使用相同网关

3.重启网络服务器:
sudo /etc/init.d/networking restart
sudo service network-manager restart

或者直接重启虚拟机:在root用户下执行reboot

2.4 永久修改主机名

在Ubuntu系统中永久修改主机名也比较简单。主机名存放在/etc/hostname文件中,修改主机名时,编辑hostname文件,在文件中输入新的主机名并保存该文件便可。

2.5 修改Hosts文件

修改/etc/hosts文件种的IP和hostname

重启网络服务:sudo /etc/init.d/networking restart
或者直接重启虚拟机:在root用户下执行reboot

2.6 关闭防火墙

一、关闭防火墙
#sudo ufw disable

关闭了防火墙,并取消了开机自启动。
二、查看防火墙状态:
#sudo ufw status

三、开启防火墙:
#sudo ufw enable

2.7 VI编辑器换行和退格键问题【非必须】

  1. sudo vi /etc/vim/vimrc.tiny
  2. vim:set ft=vim:前面的 set compatible 修改成 set nocompatible 解决方向键问题
    再在下面加上 set backspace=2 修改退格键问题

2.8 配置ssh无密码登陆(彻底集群模式)【重要】

须要配置下面两个ssh无密码登陆:
1.Hadoop102->hadoop103,hadoop4,hadoop102的ssh无密码登陆。配置Root用户和haddop用户。Hadoop102上部署了NameNode,须要管理hadoop102,hadoop103,hadoop104上面的DataNode。
2.Hadoop103->hadoop102,hadoop103,hadoop104的ssh无密码登陆。配置Root用户和haddop用户。Hadoop103上部署了Yarn的resourceManager,须要管理hadoop102,hadoop103,hadoop104上面的nodeManager。
(1)Root用户
进入.ssh目录下,若是没有.ssh目录,执行一下ssh localhost命令会自动生成.ssh文件夹
1.生成私钥和公钥

ssh-keygen -t rsa

2.拷贝公钥到hadoop103,hadoop104,hadoop102

ssh-copy-id hadoop102
ssh-copy-id hadoop103
ssh-copy-id hadoop104

拷贝后,103,104,102 的.ssh/下面会生成下面文件

3.测试ssh无密码登陆
在hadoop102上ssh到hadoop103,不须要输入密码,直接登陆。

ssh hadoop103

(2)Hadoop用户
切换到hadoop用户,执行操做同root用户

3.安装并配置java

3.1 安装java

去官方网站下载jdk-8u161-linux-x64.tar.gz ,使用以下命令解压并安装到/usr/local/目录下:

$ cd ~/下载 
$ sudo tar -xzf jdk-8u161-linux-x64.tar.gz -C /usr/local 
$ cd /usr/local
$ sudo mv jdk1.8.0_161/ java

3.2 配置环境变量

使用命令 $ vim ~/.bashrc 编辑文件~/.bashrc,在该文件开头添加如下内容:

export JAVA_HOME=/usr/local/java
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin

最后使用命令 $ source ~/.bashrc 让环境变量生效。使用java -version检查是否配置正确,正确配置会出现以下信息:

java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)

4.hadoop的安装与配置

4.1 hadoop下载与安装

安装
去hadoop官网下载hadoop-2.6.4.tar.gz ,使用如下命令安装到/usr/local/目录下:
hadoop官网:https://archive.apache.org/dist/hadoop/common/
在这里插入图片描述
hadoop目录结构
在这里插入图片描述

$ sudo tar -xzf hadoop-2.6.4.tar.gz -C /usr/local
$ cd /usr/local
$ sudo mv hadoop-2.6.4/ hadoop
$ sudo chown -R hadoop ./hadoop  #前一个hadoop为用户名,更改成本身的用户名便可

hadoop配置环境变量
将如下代码添加到~/.bashrc中:

export HADOOP_HOME=/usr/local/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/bin

测试环境变量配置
而后使用命令 source ~/.bashrc 让环境变量生效,使用命令 hadoop version 检查环境变量是否添加成功,成功以下:

5. hadoop单机配置

安装后的hadoop默认为单机配置,无需其余配置便可运行。

1.启停服务

2.测试服务

使用hadoop自带的单词统计的例子体验如下:

$ cd /usr/local/hadoop
$ mkdir ./input
$ cp ./etc/hadoop/*.xml ./input   # 将配置文件做为输入文件
$ ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep ./input ./output 'dfs[a-z.]+'
$ cat ./output/*          # 查看运行结果

结果为:
1 dfsadmin

6. hadoop伪分布式配置(HDFS启动MR)

hadoop的配置文件存放在/usr/local/hadoop/etc/hadoop下,要修改该目录下的文件core-site.xml和hdfs-site.xml来达到实现伪分布式配置。

6.1配置core-site.xml

修改core-site.xml,将修改成:

<!--配置Hadoop运行时产生的存储目录-->
<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/hadoop/data/tmp</value>
</property>
<!--配置Hadoop NameNode节点-->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
</property>
</configuration>

6.2配置hdfs-site.xml

修改hdfs-site.xml,将修改成:

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/hadoop/data/tmp/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/hadoop/data/tmp/dfs/data</value>
</property>
</configuration>

6.3格式化NameNode

配置完成后在/usr/local/hadoop下使用命令 $ ./bin/hdfs namenode -format 实现namenode的格式化,成功后会有“successfully formatted”及“Exiting with status 0”的提示,以下图:

6.4启动HDFS

接着使用sbin/start-dfs.sh来开启namenode和datanode,开启后使用命令jps查看是否开启成功,以下图:

namenode和datanode都要出现才算成功。

6.5查看日志

hadoop日志都在对应节点hadoop/logs文件下,以下所示。
在这里插入图片描述

6.6 Web查看HDFS文件系统

web访问地址:http://hadoop102:50070

7.配置yarn(Yarn启动MR)

7.1配置yarn-env.xml

配置JAVA_HOME,将JAVA_HOME地址修改成实际 jdk地址

7.2配置mapred-env.xml

配置JAVA_HOME,将JAVA_HOME地址修改成实际 jdk地址

7.3配置yarn-site.xml

修改etc/hadoop/yarn-site.xml

<configuration>    
<property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
</property>
</configuration>

7.4配置mapred-site.xml

在/usr/local/hadoop下操做

$ cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml

而后修改etc/hadoop/mapred-site.xml

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
</property>
</configuration>

7.5启动YARN

$ ./sbin/start-yarn.sh
$ ./sbin/mr-jobhistory-daemon.sh start historyserver #查看历史任务

关闭资源管理器

$ ./sbin/stop-yarn.sh
$ ./sbin/mr-jobhistory-daemon.sh stop historyserver

7.6 web访问集群资源管理

启动成功后能够在http://hadoop102:8088/cluster访问集群资源管理器。

8.配置历史服务器(可选)

历史服务器用于记录MapReduce的Job执行的信息。

8.1配置mapred-site.xml

<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop101:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop101:19888</value>
</property>

8.2启动历史服务器

mr-jobhistory-daemon.sh start  historyserver

9.配置日志汇集服务器(可选)

9.1配置yarn-site.xml

<!-- 日志汇集功能使能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 日志保留时间设置 7 天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>

9.2启动集群

启动resourcemanager

yarn-daemon.sh start resourcemanager

启动nodemanager

yarn-daemon.sh start nodemanager

启动历史服务器

mr-jobhistory-daemon.sh start historyserver

10.彻底分布式配置

10.1配置集群

10.1.1集群规划

组件 hadoop102 hadoop103 hadoop104
HDFS NameNode,DataNode DataNode Secondary NameNode,DataNode
Yarn NodeManager ResourceManager,NodeManager NodeManager

10.1.2配置文件

10.1.2.1在hadoop102节点上修改配置信息
core-site.xml

<!--配置Hadoop运行时产生的存储目录-->
<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/hadoop/module/hadoop/data/tmp</value>
</property>
<!--配置Hadoop NameNode节点-->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop102:9000</value>
</property>
</configuration>

HDFS
1.Hadoop-env.sh–>修改JAVA_HOME配置
2.Hdfs-site.xml

<configuration>
<property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop104:50090</value>
</property>
<property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/hadoop/data/tmp/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/hadoop/data/tmp/dfs/data</value>
</property>
</configuration>

3.Slaves

hadoop102
hadoop103
hadoop104

注:不要有空格
Yarn
1.Yarn-env.sh–>修改JAVA_HOME配置
2.Yarn-site.sh

<configuration>
<!--reducer获取数据的方式--> 
<property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
</property>
<!--指定yarn的ResourceManager的地址-->
<property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop103</value>
</property>
</configuration>

Mapreduce
1.Mapred-env.sh–>修改JAVA_HOME配置
2.Mapred-site.sh

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

10.1.2.2将hadoop102配置分发到其余服务器(hadoop103,hadoop104)
在hadoop102上执行下面命令:

rsync -rvl /usr/local/hadoop/etc/hadoop/* hadoop@hadoop103:/usr/local/hadoop/etc/hadoop
rsync -rvl /usr/local/hadoop/etc/hadoop/* hadoop@hadoop104:/usr/local/hadoop/etc/hadoop

10.2集群启动

10.2.1格式化NameNode
配置完成后在/usr/local/hadoop下使用命令 $ ./bin/hdfs namenode -format 实现namenode的格式化,成功后会有“successfully formatted”及“Exiting with status 0”的提示

10.2.2启动集群
先启Hdfs,再启Yarn。
1.启动Hdfs
在namenode上启动集群。
执行命令:sbin/start-dfs.sh

2.启动Yarn
在resourceManage上启动yarn
执行命令:sbin/start-yarn.sh

10.2.3 停集群
先停Yarn,再停Hdfs.
停Yarn:sbin/stop-yarn.sh
停Hdfs:sbin/stop-dfs.sh

3、指导文档

Hadoop 官方网站

https://hadoop.apache.org/

Hadoop 2.6.4 API 文档

https://hadoop.apache.org/docs/r2.6.4/