Hadoop之本地模式

  • Post author:
  • Post category:其他




本地模式介绍

本地模式是最简单的模式,所有模块都运行在一个JVM进程中,使用本地文件系统而不是HDFS。

  • 特点 :

    本地模式,即运⾏在单台机器上,没有分布式思想,使⽤的是本地⽂件系统。
  • ⽤途 :

    本地模式主要⽤于对 MapReduce 程序的逻辑进⾏调试,确保程序的正确。由于在本地模式下测试和调试 MapReduce 程序较为⽅便,因此,这种模式适宜⽤在开发阶段。【主要是用于本地开发过程中的运行调试用,下载后的Hadoop不需要设置默认就是本地模式。】

平台以及软件介绍

平台 & 软件 说明
操作系统 没有限制
虚拟软件 VMWare或者VirtualBox
虚拟机 Centos7
主机名 hadoop
IP 地址 192.168.121.121
SSH ⼯具 MobaXterm/SecureCR(Windows) 或 FinalShell(Mac)
软件包上传路径 /export/software/
软件安装路径 /export/servers/
Hadoop hadoop-2.7.4
JAVA jdk-8u301
⽤户 root



1.环境搭建

mkdir -p  /export/software
mkdir -p  /export/servers/



1.1 安装JDK

卸载open-jdk

[root@localhost servers]# rpm -qa|grep jdk
java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64
java-1.7.0-openjdk-1.7.0.91-2.6.2.3.el7.x86_64
java-1.7.0-openjdk-headless-1.7.0.91-2.6.2.3.el7.x86_64
java-1.8.0-openjdk-headless-1.8.0.65-3.b17.el7.x86_64

[root@localhost servers]# rpm -e --nodeps java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64
[root@localhost servers]# rpm -e --nodeps java-1.7.0-openjdk-1.7.0.91-2.6.2.3.el7.x86_64
[root@localhost servers]# rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.91-2.6.2.3.el7.x86_64
[root@localhost servers]# rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.65-3.b17.el7.x86_64
[root@localhost servers]# rpm -qa|grep jdk
[root@localhost servers]# 

本地上传

D:\Users\LENOVO\Desktop\software>scp jdk-8u311-linux-x64.tar.gz root@192.168.121.121:/export/software
root@192.168.121.121's password:
jdk-8u311-linux-x64.tar.gz                                                            100%  140MB  71.4MB/s   00:01

解压

tar -xzvf /export/software/jdk-8u311-linux-x64.tar.gz -C /export/servers/



1.2 安装Hadoop

本地上传

D:\Users\LENOVO\Desktop\software>scp hadoop-2.7.3.tar.gz root@192.168.121.121:/export/software
root@192.168.121.121's password:
hadoop-2.7.3.tar.gz                                                                   100%  204MB  76.9MB/s   00:02

解压

tar -xzvf /export/software/hadoop-2.7.3.tar.gz -C /export/servers/



1.3 设置环境变量

[root@localhost servers]# vi /etc/profile
#添加以下三行
export JAVA_HOME=/export/servers/jdk1.8.0_311
export HADOOP_HOME=/export/servers/hadoop-2.7.3
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile

确定安装成功

[root@localhost servers]# java -version
java version "1.8.0_311"
Java(TM) SE Runtime Environment (build 1.8.0_311-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.311-b11, mixed mode)
[root@localhost servers]# javac -version
javac 1.8.0_311
[root@localhost servers]# hadoop version
Hadoop 2.7.3
Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r baa91f7c6bc9cb92be5982de4719c1c8af91ccff
Compiled by root on 2016-08-18T01:41Z
Compiled with protoc 2.5.0
From source with checksum 2e4ce5f957ea4db193bce3734ff29ff4
This command was run using /export/servers/hadoop-2.7.3/share/hadoop/common/hadoop-common-2.7.3.jar



2.本地案例

/export/servers/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar



2.1 官方Grep案例

提供一些文本文件, grep可以从中找到想要匹配的文本(可以是正则表达式).



2.1.1在/export/data/hadoop文件下面创建一个input文件夹

[root@localhost ~]# mkdir -p /export/data/hadoop
[root@localhost ~]# cd /export/data/hadoop
[root@localhost hadoop]# mkdir input



2.1.2 将Hadoop的xml配置文件复制到input

[root@localhost hadoop]# cp /export/servers/hadoop-2.7.3/etc/hadoop/*.xml /export/data/hadoop/input/
[root@localhost hadoop]# ls -ll /export/data/hadoop/input/
total 48
-rw-r--r--. 1 root root 4436 Apr 18 17:05 capacity-scheduler.xml
-rw-r--r--. 1 root root  774 Apr 18 17:05 core-site.xml
-rw-r--r--. 1 root root 9683 Apr 18 17:05 hadoop-policy.xml
-rw-r--r--. 1 root root  775 Apr 18 17:05 hdfs-site.xml
-rw-r--r--. 1 root root  620 Apr 18 17:05 httpfs-site.xml
-rw-r--r--. 1 root root 3518 Apr 18 17:05 kms-acls.xml
-rw-r--r--. 1 root root 5511 Apr 18 17:05 kms-site.xml
-rw-r--r--. 1 root root  690 Apr 18 17:05 yarn-site.xml



2.1.3 执行share目录下的MapReduce程序

[root@localhost hadoop]# hadoop jar /export/servers/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar grep input output 'dfs[a-z.]+'

[root@localhost hadoop]# hadoop jar /export/servers/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar grep /export/data/hadoop/input /export/data/hadoop/output 'dfs[a-z.]+'



2.1.4 查看输出结果

[root@localhost hadoop]# ls -ll output/
total 4
-rw-r--r--. 1 root root 11 Apr 18 17:15 part-r-00000
-rw-r--r--. 1 root root  0 Apr 18 17:15 _SUCCESS
[root@localhost hadoop]# cat output/part-r-00000 
1       dfsadmin
[root@localhost hadoop]#


注意output不能创建,且再次运行的时候需要删除out文件夹

否则会抛出 文件已经存在  异常
org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory file:/opt/software/hadoop-2.7.3/output already exists
    at org.apache.hadoop.mapreduce.lib.output.FileOutputFormat.checkOutputSpecs(FileOutputFormat.java:146)



2.2 官方WordCount案例



2.2.1 在/export/data/hadoop文件下面创建一个wcinput文件夹

[root@localhost hadoop]# pwd
/export/data/hadoop
[root@localhost hadoop]# mkdir wcinput



2.2.2 在wcinput文件下创建一个count文件

[root@localhost wcinput]# pwd
/export/data/hadoop/wcinput
[root@localhost wcinput]# touch count



2.2.3 编辑count文件

[root@localhost wcinput]# vi count
#输入以下内容:
hadoop yarn
hadoop mapreduce
hdfs
hdfs



2.2.4 执行程序

[root@localhost hadoop]# hadoop jar /export/servers/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount wcinput wcoutput
[root@localhost hadoop]# cat wcoutput/part-r-00000 
hadoop  2
hdfs    2
mapreduce       1
yarn    1



3.测试程序安装正常的pi程序

[root@localhost hadoop]# hadoop jar /export/servers/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar pi 10 5```



版权声明:本文为yandao原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。