hadoop环境搭建

2018-06-04  本文已影响0人  熊_看不见

一、平台环境

CentOS6.5

二、软件版本

hadoop-2.8.1下载地址
jdk-8u45-linux-x64下载地址
apache-maven-3.3.9软件下载

三、内容目录

  1. 前置内容
    1.1 jdk安装和配置
    1.2 maven安装和配置
    1.3 hadoop 编译
  2. 相关知识
    2.1 hadoop部署方式介绍
    2.2 hadoop主要组件介绍
    2.3 hadoop主要进程介绍
    2.4 jps命令介绍
  3. 环境搭建
    3.1 Hadoop本地模式安部署
    3.2 Hadoop伪分布式模式部署

1、前置内容

1.1 jdk安装和配置

    之前的文章已经完成过这一步骤,详情请见CentOS6.5安装JDK8

1.2 maven安装和配置

    之前的文章已经完成过这一步骤,详情请见CentOS6.5安装Maven

1.3 hadoop 编译

    hadoop编译并发必要步骤,只是一个熟悉把源码编译成可用的工具包操作的过程。可以直接在官网下载已经编译好的包跳过此步骤。
    如果对此步骤感兴趣可以参考hadoop-2.8.1编译

2、相关知识

2.1 hadoop部署方式介绍

    Hadoop部署模式有:本地模式、伪分布模式、完全分布式模式、HA完全分布式模式。区分的依据是NameNode、DataNode、SecondaryNameNode、ResourceManager、NodeManager等模块运行在几个JVM进程、几个机器。参考下面表格:

模式名称 各个模块占用的JVM进程数 各个模块运行在几个机器数上
本地模式 1个 1个
伪分布模式 N个 1个
完全分布式模式 N个 N个
HA完全分布式模式 N个 N个
2.2 hadoop主要组件介绍

    hadoop主要组件:HDFS、MapReduce、Yarn。

HDFS( Hadoop Distributed File System):hadoop自带的分布式文件系统,是hadoop数据存储基础。

MapReduce:一套从海量源数据提取分析元素最后返回结果集的编程模型(分布式计算,无进程)。

Yarn(Yet Another Resource Negotiator):通用的资源管理平台,可为各类计算框架提供资源的管理和调度。

此处只对三个组件功能进行简单说明,后续会通过文章对三个组件进行详细说明。注意:Yarn是Hadoop2.x才出MapReduce功能模块中拆出来的。

2.3 hadoop主要进程介绍

    hadoop主要进程分为:HDFS相关进程、Yarn相关进程。下面将分别罗列两者的进程。

2.4 jps命令介绍

   请参考jps命令原理

3、环境搭建

    学习到这里仅仅尝试了本地模式和伪分布式部署。其他模式的部署待后续学习过程慢慢补充。

3.1 Hadoop本地模式部署

   本地模式部署比较简单,不需要修改任何配置文件,简单说明一下步骤:

  1. 创建一个存放本地模式hadoop的目录
[hadoop@hadoop002 software]$ mkdir /opt/software
  1. 文件上传并解压hadoop文件
[hadoop@hadoop002 software]$ tar -zxvf hadoop-2.6.0-cdh5.7.0.tar.gz 
  1. 确保JAVA_HOME环境变量已经配置好
[hadoop@hadoop002 software]$ echo $JAVA_HOME
  1. 运行MapReduce程序,验证
       hadoop自带的wordcount例子来在本地模式下测试跑mapreduce。
    4.1. 准备mapreduce输入文件teddy.input
[hadoop@hadoop002 software]$ cat /opt/data/teddy.input
hadoop mysql hive
spark oracle storm
mysql hive

4.2. 运行hadoop自带的mapreduce Demo

[hadoop@hadoop002 hadoop-2.6.0-cdh5.7.0]$  bin/hadoop jar share/hadoop/mapreduce2/hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar wordcount /opt/data/teddy.input output2

4.3. 查看输出结果

[hadoop@hadoop002 output2]$ pwd
/opt/software/hadoop-2.6.0-cdh5.7.0/output2
[hadoop@hadoop002 output2]$ ll
total 4
-rw-r--r--. 1 hadoop hadoop 49 Jun  3 17:43 part-r-00000
-rw-r--r--. 1 hadoop hadoop  0 Jun  3 17:43 _SUCCESS

输出目录中有_SUCCESS文件说明JOB运行成功,part-r-00000是输出结果文件。
查看输出结果

[hadoop@hadoop002 output2]$ cat part-r-00000 
hadoop  1
hive    2
mysql   2
oracle  1
spark   1
storm   1
3.2 Hadoop伪分布式模式部署
  1. Hadoop所用的用户设置
    1.1 创建hadoop用户
[root@hadoop002 data]# useradd hadoop
[root@hadoop002 data]# passwd hadoop

1.2 给hadoop用户sudo权限

[root@hadoop002 data]# vi /etc/sudoers

设置权限,学习环境可以将hadoop用户的权限设置的大一些,但是生产环境一定要注意普通用户的权限限制。
配置如下:

root ALL=(ALL) ALL
hadoop ALL=(root) NOPASSWD:ALL

注意:如果root用户无权修改sudoers文件,先手动为root用户添加写权限。

[root@hadoop002 ~]# chmod u+w /etc/sudoers

切换到hadoop用户

[root@hadoop002 ~]# su - hadoop
  1. 解压Hadoop目录文件
    2.1 创建一个存放本地模式hadoop的目录
[hadoop@hadoop002 software]$ mkdir /opt/software

2.2 文件上传并解压hadoop文件

[hadoop@hadoop002 software]$ tar -zxvf hadoop-2.6.0-cdh5.7.0.tar.gz 
  1. 配置Hadoop
    3.1 配置hadoop环境变量
[hadoop@hadoop002 hadoop-2.6.0-cdh5.7.0]$ vi /etc/profile

增加配置如下

export HADOOP_HOME=/opt/software/hadoop-2.6.0-cdh5.7.0
export PATH=$MAVEN_HOME/bin:$JAVA_HOME/bin:$HADOOP_HOME/sbin:$PATH

使配置文件生效

[hadoop@hadoop002 hadoop-2.6.0-cdh5.7.0]$ source /etc/profile

3.2 配置 hadoop-env.sh、mapred-env.sh、yarn-env.sh文件的JAVA_HOME参数
配置文件所在目录为:/opt/software/hadoop-2.6.0-cdh5.7.0/etc/hadoop
修改hadoop-env.sh

[hadoop@hadoop002 hadoop]$ vi hadoop-env.sh 

修改为:

export JAVA_HOME=/usr/java/jdk1.8.0_45

依次修改三个文件。
3.3 配置core-site.xml
    配置文件的路径是:/opt/software/hadoop-2.6.0-cdh5.7.0/etc/hadoop

[hadoop@hadoop002 hadoop]$ vi ${HADOOP_HOME}/etc/hadoop/core-site.xml

配置入下:

<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://hadoop002:9000</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
               <value>/opt/data/tmp</value>
        </property>
</configuration>

其中

注意:默认的hadoop.tmp.dir是/tmp/hadoop-${user.name},此时有个问题就是NameNode会将HDFS的元数据存储在这个/tmp目录下,如果操作系统重启了,系统会清空/tmp目录下的东西,导致NameNode元数据丢失,是个非常严重的问题,所有我们应该修改这个路径。

现在/opt/data/tmp/目录是不存在的,我们要创建它并将它的权限分配给hadoop用户。

[hadoop@hadoop002 hadoop]$ sudo mkdir -p /opt/data/tmp
[hadoop@hadoop002 hadoop]$ sudo chown –R hadoop:hadoop /opt/data/tmp
  1. 配置、格式化、启动HDFS
    4.1 配置hdfs-site.xml
        配置文件的路径是:/opt/software/hadoop-2.6.0-cdh5.7.0/etc/hadoop
[hadoop@hadoop002 hadoop]$ vi ${HADOOP_HOME}/etc/hadoop/hdfs-site.xml

配置如下:

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

dfs.replication配置的是HDFS存储时的备份数量,因为这里是伪分布式环境只有一个节点,所以设置为1。
4.2 格式化hdfs
执行命令

[hadoop@hadoop002 hadoop-2.6.0-cdh5.7.0]$ $HADOOP_HOME/bin/hdfs namenode -format

格式化是对HDFS这个分布式文件系统中的DataNode进行分块,统计所有分块后的初始元数据的存储在NameNode中。格式化后,查看core-site.xml里hadoop.tmp.dir(本例是/opt/data目录)指定的目录下是否有了dfs目录,如果有,说明格式化成功。

[root@hadoop002 current]# pwd
/opt/data/tmp/dfs/name/current
[root@hadoop002 current]# ll
total 16
-rw-rw-r--. 1 hadoop hadoop 353 Jun  3 18:22 fsimage_0000000000000000000
-rw-rw-r--. 1 hadoop hadoop  62 Jun  3 18:22 fsimage_0000000000000000000.md5
-rw-rw-r--. 1 hadoop hadoop   2 Jun  3 18:22 seen_txid
-rw-rw-r--. 1 hadoop hadoop 207 Jun  3 18:22 VERSION
[root@hadoop002 current]# cat VERSION 
#Sun Jun 03 18:22:04 CST 2018
namespaceID=826949800
clusterID=CID-3e8c3f5c-6ff5-461f-ace1-e2be7de4b72c
cTime=0
storageType=NAME_NODE
blockpoolID=BP-1770757348-192.168.137.130-1528021323999
layoutVersion=-60

4.3 启动NameNode

[hadoop@hadoop002 hadoop-2.6.0-cdh5.7.0]$ ${HADOOP_HOME}/sbin/hadoop-daemon.sh start namenode

4.4 启动DataNode

[hadoop@hadoop002 hadoop-2.6.0-cdh5.7.0]$ ${HADOOP_HOME}/sbin/hadoop-daemon.sh start datanode

4.5 启动SecondaryNameNode

[hadoop@hadoop002 hadoop-2.6.0-cdh5.7.0]$ ${HADOOP_HOME}/sbin/hadoop-daemon.sh start secondarynamenode

4.6 jps命令查看是否已经启动成功,有结果就是启动成功了。

[hadoop@hadoop002 hadoop-2.6.0-cdh5.7.0]$ jps
52035 SecondaryNameNode
51863 NameNode
51945 DataNode
52075 Jps

启动成功

  1. 配置、启动YARN
    5.1 配置mapred-site.xml
        默认没有mapred-site.xml文件,但是有个mapred-site.xml.template配置模板文件。复制模板生成mapred-site.xml。
[hadoop@hadoop002 hadoop]$ pwd
/opt/software/hadoop-2.6.0-cdh5.7.0/etc/hadoop
[hadoop@hadoop002 hadoop]$ cp mapred-site.xml.template mapred-site.xml
[hadoop@hadoop002 hadoop]$ vi mapred-site.xml

增加配置如下:

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

指定mapreduce运行在yarn框架上。

5.2 配置yarn-site.xml

[hadoop@hadoop002 hadoop]$ pwd
/opt/software/hadoop-2.6.0-cdh5.7.0/etc/hadoop
[hadoop@hadoop002 hadoop]$ vi yarn-site.xml

增加配置如下:

<configuration>
        <property>
                 <name>yarn.nodemanager.aux-services</name>
                  <value>mapreduce_shuffle</value>
        </property>
</configuration>
[hadoop@hadoop002 hadoop]$ ${HADOOP_HOME}/sbin/yarn-daemon.sh start resourcemanager

5.4 启动nodemanager

[hadoop@hadoop002 hadoop]$ ${HADOOP_HOME}/sbin/yarn-daemon.sh start nodemanager

5.5 查看是否启动成功

[hadoop@hadoop002 hadoop]$ jps
52035 SecondaryNameNode
52294 ResourceManager
51863 NameNode
51945 DataNode
52413 NodeManager
52494 Jps

5.6 YARN的Web页面
YARN的Web客户端端口号是8088,通过http://主机ip:8088/可以查看。


伪分布式部署.png
  1. 在Yarn上运行MapReduce Job
       hadoop自带的wordcount例子来在伪分布式下测试跑mapreduce。
    6.1 创建测试用的Input文件
[hadoop@hadoop002 hadoop-2.6.0-cdh5.7.0]$ bin/hdfs dfs -mkdir -p /wordcountdemo/input

6.2 准备mapreduce输入文件teddy.input

[hadoop@hadoop002 software]$ cat /opt/data/teddy.input
hadoop mysql hive
spark oracle storm
mysql hive

6.3 上传文件到hdfs

[hadoop@hadoop002 hadoop-2.6.0-cdh5.7.0]$ bin/hdfs dfs -put /opt/data/teddy.input /wordcountdemo/input

6.4 运行mapreduce

[hadoop@hadoop002 hadoop-2.6.0-cdh5.7.0]$ bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar wordcount /wordcountdemo/input /wordcountdemo/output

完成结果如下:

[hadoop@hadoop002 hadoop-2.6.0-cdh5.7.0]$ bin/hdfs dfs -ls /wordcountdemo/output
Found 2 items
-rw-r--r--   1 hadoop supergroup          0 2018-06-03 18:56 /wordcountdemo/output/_SUCCESS
-rw-r--r--   1 hadoop supergroup         49 2018-06-03 18:56 /wordcountdemo/output/part-r-00000
上一篇 下一篇

猜你喜欢

热点阅读