Hadoop2.X的环境配置与运行官方案例

1、安装以前的准备
1.1 修改主机名称
进入 Linux 系统查看本机的主机名。经过 hostname 命令查看。
[root@localhost ~]# hostname
localhost.localdomain
若是此时须要修改主机名则能够按照以下的方式进行修改
范例一:临时修改主机名称为Hadoop01 hostname hadoop01 重启以后失效
范例二:永久修改主机名称为Hadoop01
vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=hadoop01
在修改完主机名称以后,须要编辑/etc/hosts 文件须要把主机名称与IP地址进行映射
vi /etc/hosts 在该文件下添加以下内容java

192.168.1.128 hadoop01 # 地址是本身主机名称的ip
1.2 关闭防火墙
1)service iptables stop 关闭防火墙
2)chkconfig iptables off 永久关闭防火墙启动
3)chkconfig iptables --list 查看防火墙开机启动状态
1.3 规划软件安装目录
1)建立安装包的保存目录,以及安装目录
mkdir -p /opt/software 保存软件的安装包
mkdir -p /opt/app 软件的安装路径
1.4 建立Hadoop用户,以及赋予sudo权限
1)建立Hadoop用户,之后的操做都是在hadoop用户下完成的
useradd hadoop 建立hadoop用户
passwd hadoop 为hadoop用户设置密码
2)为hadoop用户赋予sudo权限
在root用户下,执行visudo命令编辑以下内容
Allow root to run any commands anywhere root ALL=(ALL) ALL
hadoop ALL=(ALL) ALL 为hadoop用户设置sudo权限
Same thing without a password %wheel ALL=(ALL) NOPASSWD: ALL hadoop ALL=(ALL) NOPASSWD: ALL. 为hadoop用户设置免密码sudo权限
1.5 安装JDK环境
首先先把jdk的安装包上传到software 文件夹下,以后对其安装
1)解压 sudo tar -zvxf jdk-8u181-linux-x64.tar.gz
2)配置JDK环境变量
首先获取JDK的安装路径
[hadoop@hadoop01 jdk1.8.0_181]$ pwd
/opt/soft/jdk1.8.0_181
接下来打开 /etc/profile 文件进行环境变量的设置
vi /etc/profile
在 profie 文件末尾添加 jdk 路径:linux

JAVA_HOME

export JAVA_HOME=/data/jdk1.8.0_181
export PATH=$JAVA_HOME/bin:$PATH
保存后推出 :wq
完成以上的操做以后,配置文件并不能当即生效,须要使用到以下命令,使配置文件当即生效
[hadoop@hadoop01 jdk1.8.0_181]$ source /etc/profile
以后测试JDK环境变量是否配置成功,使用以下命令输出JDK的版本信息
[hadoop@hadoop01 jdk1.8.0_181]$ java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
若是能看到如上的信息,说明JDK的环境变量已经配置成功
1.6 安装Hadoop环境
1)进入到软件包的安装路径下:
[hadoop@hadoop01 /]$ cd /opt/soft/
对hadoop安装包进行解压
[hadoop@hadoop01 soft]$ sudo tar -zvxf hadoop-2.7.2.tar.gz
解压成功以后,hadoop的安装目录结构以下:
bin:Hadoop最基本的管理脚本和使用脚本所在目录,这些脚本是sbin目录下管理脚本的基础实现,用户能够直接使用这些脚本管理和使用hadoop
etc:Hadoop配置文件所在目录,包括core-site.xml, hdfs-site.xml, mapred-site.xml等从hadoop1.0继承而来的配置文件和yarn-site.xml等hadoop 2.0新增的配置文件
include:对外提供的编程酷头文件(具体动态库和静态库在lib目录中),这些头文件均是用c++定义的,一般用于c++程序访问hdfs或者编写mapreduce程序
lib:该目录包含了Hadoop对外提供的的编程动态库和静态库,与include目录中的头文件结合使用。
libexec:各个服务对应的shell配置文件所在目录,可用于配置日志输出目录,启动参数(好比JVM参数)等基本信息。
sbin:Hadoop管理脚本所在目录,主要包含HDFS和YARN中各种服务的启动/关闭脚本
share:Hadoop各个模块编译后的jar包所在目录
2) 配置hadoop环境
hadoop须要咱们配置的相关文件都存放在$HADOOP_HOME/etc/hadoop目录下面,首先进入到该目录
[hadoop@hadoop01 hadoop]$ cd etc/hadoop/
进入到该目录以后使用ls 命令查看该目录下的文件信息
-rw-r--r--. 1 root root 4436 May 22 2017 capacity-scheduler.xml
-rw-r--r--. 1 root root 1335 May 22 2017 configuration.xsl
-rw-r--r--. 1 root root 318 May 22 2017 container-executor.cfg
-rw-r--r--. 1 root root 774 May 22 2017 core-site.xml
-rw-r--r--. 1 root root 3670 May 22 2017 hadoop-env.cmd
-rw-r--r--. 1 root root 4224 May 22 2017 hadoop-env.sh
-rw-r--r--. 1 root root 2598 May 22 2017 hadoop-metrics2.properties
-rw-r--r--. 1 root root 2490 May 22 2017 hadoop-metrics.properties
-rw-r--r--. 1 root root 9683 May 22 2017 hadoop-policy.xml
-rw-r--r--. 1 root root 775 May 22 2017 hdfs-site.xml
-rw-r--r--. 1 root root 1449 May 22 2017 httpfs-env.sh
-rw-r--r--. 1 root root 1657 May 22 2017 httpfs-log4j.properties
-rw-r--r--. 1 root root 21 May 22 2017 httpfs-signature.secret
-rw-r--r--. 1 root root 620 May 22 2017 httpfs-site.xml
-rw-r--r--. 1 root root 3518 May 22 2017 kms-acls.xml
-rw-r--r--. 1 root root 1527 May 22 2017 kms-env.sh
-rw-r--r--. 1 root root 1631 May 22 2017 kms-log4j.properties
-rw-r--r--. 1 root root 5511 May 22 2017 kms-site.xml
-rw-r--r--. 1 root root 11237 May 22 2017 log4j.properties
-rw-r--r--. 1 root root 951 May 22 2017 mapred-env.cmd
-rw-r--r--. 1 root root 1383 May 22 2017 mapred-env.sh
-rw-r--r--. 1 root root 4113 May 22 2017 mapred-queues.xml.template
-rw-r--r--. 1 root root 758 May 22 2017 mapred-site.xml.template
-rw-r--r--. 1 root root 10 May 22 2017 slaves
-rw-r--r--. 1 root root 2316 May 22 2017 ssl-client.xml.example
-rw-r--r--. 1 root root 2268 May 22 2017 ssl-server.xml.example
-rw-r--r--. 1 root root 2250 May 22 2017 yarn-env.cmd
-rw-r--r--. 1 root root 4567 May 22 2017 yarn-env.sh
-rw-r--r--. 1 root root 690 May 22 2017 yarn-site.xml
咱们首先能够发现,这些文件目前的权限都是基于root用户的,可是咱们如今使用的是hadoop用户,hadoop用户并无这些文件的权限,因此首先须要修改权限
使用chown 命令修改用户与用户组权限
sudo chown -R hadoop:hadoop /opt/soft/hadoop-2.7.2/
修改完成以后再次使用ls命令查看文件,查看是否修改为功 [hadoop@hadoop01 hadoop]$ ll
-rw-r--r--. 1 hadoop hadoop 4436 May 22 2017 capacity-scheduler.xml
-rw-r--r--. 1 hadoop hadoop 1335 May 22 2017 configuration.xsl
-rw-r--r--. 1 hadoop hadoop 318 May 22 2017 container-executor.cfg
-rw-r--r--. 1 hadoop hadoop 774 May 22 2017 core-site.xml
-rw-r--r--. 1 hadoop hadoop 3670 May 22 2017 hadoop-env.cmd
-rw-r--r--. 1 hadoop hadoop 4224 May 22 2017 hadoop-env.sh
-rw-r--r--. 1 hadoop hadoop 2598 May 22 2017 hadoop-metrics2.properties
-rw-r--r--. 1 hadoop hadoop 2490 May 22 2017 hadoop-metrics.properties
-rw-r--r--. 1 hadoop hadoop 9683 May 22 2017 hadoop-policy.xml
-rw-r--r--. 1 hadoop hadoop 775 May 22 2017 hdfs-site.xml
-rw-r--r--. 1 hadoop hadoop 1449 May 22 2017 httpfs-env.sh
-rw-r--r--. 1 hadoop hadoop 1657 May 22 2017 httpfs-log4j.properties
-rw-r--r--. 1 hadoop hadoop 21 May 22 2017 httpfs-signature.secret
-rw-r--r--. 1 hadoop hadoop 620 May 22 2017 httpfs-site.xml
-rw-r--r--. 1 hadoop hadoop 3518 May 22 2017 kms-acls.xml
-rw-r--r--. 1 hadoop hadoop 1527 May 22 2017 kms-env.sh
-rw-r--r--. 1 hadoop hadoop 1631 May 22 2017 kms-log4j.properties
-rw-r--r--. 1 hadoop hadoop 5511 May 22 2017 kms-site.xml
-rw-r--r--. 1 hadoop hadoop 11237 May 22 2017 log4j.properties
-rw-r--r--. 1 hadoop hadoop 951 May 22 2017 mapred-env.cmd
-rw-r--r--. 1 hadoop hadoop 1383 May 22 2017 mapred-env.sh
-rw-r--r--. 1 hadoop hadoop 4113 May 22 2017 mapred-queues.xml.template
-rw-r--r--. 1 hadoop hadoop 758 May 22 2017 mapred-site.xml.template
-rw-r--r--. 1 hadoop hadoop 10 May 22 2017 slaves
-rw-r--r--. 1 hadoop hadoop 2316 May 22 2017 ssl-client.xml.example
-rw-r--r--. 1 hadoop hadoop 2268 May 22 2017 ssl-server.xml.example
-rw-r--r--. 1 hadoop hadoop 2250 May 22 2017 yarn-env.cmd
-rw-r--r--. 1 hadoop hadoop 4567 May 22 2017 yarn-env.sh
-rw-r--r--. 1 hadoop hadoop 690 May 22 2017 yarn-site.xml
经过再次查看咱们发现,如今的权限已经所有修改成hadoop ,这样咱们就能够在hadoop用户下对这些文件进行操做了
完成了以上的配置以后,咱们接下来首先须要配置以下文件
hadoop-env.sh: 用于hadoop的环境变量配置文件
#The java implementation to use.
export JAVA_HOME=/opt/soft/jdk1.8.0_181
在该配置文件中,找到如上内容,而且修改JAVA_HOME 为本身的JDK路径 配置完成以后,能够在hadoop根路径下,输入以下命令
bin/hadoop
Usage: hadoop [--config confdir] [COMMAND | CLASSNAME]
CLASSNAME run the class named CLASSNAME
or
where COMMAND is one of:
fs run a generic filesystem user client
version print the version
jar <jar> run a jar filec++

note: please use "yarn jar" to launch
                         YARN applications, not this command.

checknative [-a|-h] check native hadoop and compression libraries availability
distcp <srcurl> <desturl> copy file or directories recursively
archive -archiveName NAME -p <parent path> <src>* <dest> create a hadoop archive
classpath prints the class path needed to get the
credential interact with credential providers正则表达式

Hadoop jar and the required libraries

daemonlog get/set the log level for each daemon
trace view and modify Hadoop tracing settingsshell

Most commands print help when invoked w/o parameters.
若是能看到如上的信息,说明基本的运行环境已经搭建完成了
2、Hadoop运行模式
Hadoop的运行模式,分为如下几种:
1) 本地模式(默认模式)
不须要启用单独进程,直接能够运行,测试和开发时使用。
2)伪分布模式
等同于彻底分布式,只有一个节点。
3)彻底分布式模式
多个节点一块儿运行。
2.1 本地运行Hadoop官方案例Grep
对于这个案例来讲,主要的做用就是,在一堆文件中与规定的正则表达式进行匹配,把匹配成功的单词出现的次数,进行统计
$ mkdir input
$ cp etc/hadoop/*.xml input
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep input output 'dfs[a-z.]+'
$ cat output/*
以上为官网上给出的案例代码
从以上的案例代码能够得出,首先须要建立一个目录,用于存放须要统计的文件,而对于统计结果的保存目录则不用之前建立,注意:Hadoop中输出结果的目录是不能提早存在的
范例:运行grep案例
1)在hadoop根目录下建立一个文件夹input
[hadoop@hadoop01 hadoop-2.7.2]$ mkdir input
2) 将hadoop的xml配置文件复制到input
[hadoop@hadoop01 hadoop-2.7.2]$ cp etc/hadoop/*.xml input/
3) 执行share目录下的mapreduce程序
[hadoop@hadoop01 hadoop-2.7.2]$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep input output 'dfs[a-z.]+'
4) 查看输出结果
[hadoop@hadoop01 hadoop-2.7.2]$ cat output/*
1 dfsadmin
2.2 运行官方wordcount案例
1) 在hadoop根目录中建立用于保存统计文件的wcinput目录
[hadoop@hadoop01 hadoop-2.7.2]$ mkdir wcinput
2) 在 wcinput 文件下建立一个 wordcount.txt 文件
[hadoop@hadoop01 wcinput]$ vi worldcount.txt
hello java world input
hadoop hive zookeeper java
world input hello hadoop
hbase zookeeper sqoop
3) 执行wordcount案例程序
[hadoop@hadoop01 hadoop-2.7.2]$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount wcinput wcoutput
4) 查看结果
[hadoop@hadoop01 hadoop-2.7.2]$ cat wcoutput/part-r-00000
hadoop 2
hbase 1
hello 2
hive 1
input 2
java 2
sqoop 1
world 2
zookeeper 2
经过以上的方式,就能够完成Hadoop的最基本的环境搭建,以及运行Hadoop的一些案例编程