【大数据】大数据Hadoop快速入门之初识

一、Hadoop简介:

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。

用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

 Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。 

Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
 
Hadoop 是 Apache 旗下的一个用 java 语言实现开源软件框架, 是一个开发和运行处理大规模数据的软件平台。 允许使用简单的编程模型在大量计算机集群上对大型数据集进行分布式处理。它的核心组件有:

HDFS(分布式文件系统):解决海量数据存储
YARN(作业调度和集群资源管理的框架):解决资源任务调度
MAPREDUCE(分布式运算编程框架): 解决海量数据计算

当下的 Hadoop 已经成长为一个庞大的体系,随着生态系统的成长,新出现的项目越来越多,其中不乏一些非 Apache 主管的项目,这些项目对 HADOOP 是很好的补充或者更高层的抽象。 比如:

HDFS:分布式文件系统
MAPREDUCE:分布式运算程序开发框架
HIVE:基于 HADOOP 的分布式数据仓库,提供基于 SQL 的查询数据操作
HBASE:基于 HADOOP 的分布式海量数据库
ZOOKEEPER:分布式协调服务基础组件
Mahout:基于 mapreduce/spark/flink 等分布式运算框架的机器学习算法库
Oozie:工作流调度框架
Sqoop:数据导入导出工具(比如用于 mysql 和 HDFS 之间)
Flume:日志数据采集框架
Impala: 基于 Hadoop 的实时分析

二、Hadoop发展历史:


Hadoop 是 Apache Lucene 创始人 Doug Cutting 创建的。最早起源于 Nutch,它是 Lucene 的子项目。 Nutch 的设计目标是构建一个大型的全网搜索引擎,包括网页抓取、索引、查询等功能,但随着抓取网页数量的增加,遇到了严重的可扩展性问题: 如何解决数十亿网页的存储和索引问题。
2003 年 Google 发表了一篇论文为该问题提供了可行的解决方案。 论文中描述的是谷歌的产品架构,该架构称为: 谷歌分布式文件系统(GFS) ,可以解决他们在网页爬取和索引过程中产生的超大文件的存储需求。


2004 年 Google 发表论文向全世界介绍了谷歌版的 MapReduce 系统。同时期, Nutch 的开发人员完成了相应的开源实现 HDFS 和 MAPREDUCE,并从Nutch 中剥离成为独立项目 HADOOP,到 2008 年 1 月, HADOOP 成为 Apache 顶级项目,迎来了它的快速发展期。


2006 年 Google 发表了论文是关于 BigTable 的,这促使了后来的 Hbase 的发 
展。

三、Apache Hadoop 2.9.2的特点

Hadoop的特点

  • 扩容能力:Hadoop 是在可用的计算机集群间分配数据并完成计算任务的,这些集群可用方便的扩展到数以千计的节点中。
  • 成本低:Hadoop 通过普通廉价的机器组成服务器集群来分发以及处理数据,以至于成本很低。
  • 高效率通过并发数据, Hadoop 可以在节点之间动态并行的移动数据,使得速度非常快。
  • 可靠性能自动维护数据的多份复制,并且在任务失败后能自动地重新部署(redeploy)计算任务。所以 Hadoop 的按位存储和处理数据的能力值得人们信赖。

Apache Hadoop 2.9.2是2.xy版本系列中的一个点版本,它基于之前的稳定版本2.9.1。

以下是主要功能和改进的简短概述。

  • Common

    • HADOOP资源估算器。有关详细信息,请参阅用户文档
  • HDFS

    • 基于HDFS路由器的联合。有关详细信息,请参阅用户文档
  • YARN

    • YARN时间线服务v.2。有关详细信息,请参阅用户文档
    • YARN联邦。有关详细信息,请参阅用户文档
    • 机会集装箱。有关详细信息,请参阅用户文档
    • YARN Web UI v.2。有关详细信息,请参阅用户文档
    • 通过API更改队列配置(仅在Capacity Scheduler上受支持)。有关详细信息,请参阅用户文档
    • 更新已分配/正在运行的容器的资源和执行类型。(仅在Capacity Scheduler上受支持)。有关详细信息,请参阅用户文档

四、集群说明:

Hadoop 发行版本分为开源社区版和商业版。

社区版是指由 Apache 软件基金会维护的版本,是官方维护的版本体系。
商业版 Hadoop 是指由第三方商业公司在社区版 Hadoop 基础上进行了一些修改、整合以及各个服务组件兼容性测试而发行的版本, 比较著名的有 cloudera 的 CDH、 mapR 等。
我们介绍的是社区版: Apache Hadoop。 后续如未说明都是指 Apache 版。Hadoop 的版本很特殊,是由多条分支并行的发展着。 大的来看分为 3 个大的系列版本: 1.x、 2.x、 3.x。

  • Hadoop1.0 由一个分布式文件系统 HDFS 和一个离线计算框架 MapReduce 组成。
  • Hadoop 2.0 则包含一个支持 NameNode 横向扩展的 HDFS,一个资源管理系统YARN 和一个运行在 YARN 上的离线计算框架 MapReduce。相比于 Hadoop1.0,Hadoop 2.0 功能更加强大,且具有更好的扩展性、性能,并支持多种计算框架。
  • Hadoop 3.0 相比之前的 Hadoop 2.0 有一系列的功能增强。

集群介绍

  • HADOOP 集群具体来说包含两个集群: HDFS 集群YARN 集群,两者逻辑上分离,但物理上常在一起
  • HDFS 集群负责海量数据的存储,集群中的角色主要有:NameNode、 DataNode、 SecondaryNameNode
  • YARN 集群负责海量数据运算时的资源调度,集群中的角色主要有:ResourceManager、 NodeManager
  • mapreduce 是一个分布式运算编程框架,是应用程序开发包,由用户按照编程规范进行程序开发,后打包运行在 HDFS 集群上,并且受到 YARN 集群的资源调度管理。

Hadoop 部署方式分三种:

  • 独立模式又称为单机模式, 仅 1 个机器运行 1 个 java 进程,主要用于调试。(单机)
  • 伪分布模式也是在 1 个机器上运行 HDFS 的 NameNode 和 DataNode、 YARN 的ResourceManger 和 NodeManager, 但分别启动单独的 java 进程,主要用于调试。(单机)
  • 集群模式主要用于生产环境部署。 会使用 N 台主机组成一个 Hadoop 集群。这种部署模式下, 主节点和从节点会分开部署在不同的机器上。

五、Hadoop的安装:

  • 安装前说明
    • 支持的平台:GNU/Linux 、window;
    • 依赖的软件:

      Apache Hadoop的2.7及更高版本需要Java 7及以上。它在OpenJDK和Oracle(HotSpot)的JDK / JRE 上构建和测试。

      早期版本(2.6及更早版本)支持Java 6及以上。

      linux平台还需要依赖:必须安装ssh并运行sshd才能使用管理远程hadoop守护进程的hadoop脚本。
       $ sudo apt-get install ssh
       $ sudo apt-get install rsync
  • 安装说明:
    • 下载安装包地址如下:http://mirror.bit.edu.cn/apache/hadoop/common/ 目前最新版本为hadoop 3.2.0
    • 开始下载包:通过命令:wget https://mirror.bit.edu.cn/apache/hadoop/common/hadoop-3.2.0/hadoop-3.2.0.tar.gz 下载安装包
    • tar -zxvf hadoop-3.2.0.tar.gz 解压安装包
    • 设置HADOOP环境变量
      vim /etc/profile 末尾追加以下内容:
       
      export  JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre/
      export  CLASSPATH=.:${JAVA_HOME}/lib
      export  HADOOP_HOME=/home/hadoop-3.2.0
      export  PATH=$JAVA_HOME/bin:$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
      
      source /etc/profile 刷新配置文件

      在此Hadoop基本已经安装完成:通过运行命令检查 hadoop version检查安装是否正常;如我机子测试输出信息,代表已经成功安装:

hadoop version
Hadoop 3.2.0
Source code repository https://github.com/apache/hadoop.git -r e97acb3bd8f3befd27418996fa5d4b50bf2e17bf
Compiled by sunilg on 2019-01-08T06:08Z
Compiled with protoc 2.5.0
From source with checksum d3f0795ed0d9dc378e2c785d3668f39
This command was run using /home/hadoop-3.2.0/share/hadoop/common/hadoop-common-3.2.0.jar

六、3种集群模式配置说明:

1、独立模式又称为单机模式:

默认情况下,Hadoop配置为以非分布式模式运行,作为单个Java进程。这对调试很有用。

测试用例:

  $ mkdir input
  $ cp etc/hadoop/*.xml input
  $ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar grep input output 'dfs[a-z.]+'
  $ cat output/*

2、伪分布式操作

Hadoop也可以在伪分布式模式下在单节点上运行,其中每个Hadoop守护程序在单独的Java进程中运行。

基础配置如下:

1、etc/hadoop/core-site.xml:<!-- 用于设置 Hadoop 的文件系统,由 URI 指定 -->

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

2、etc/hadoop/hdfs-site.xml:默认的块复制数量为3

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

设置无密码ssh:

1、先检查自己的环境是否可以通过ssh无密码访问

ssh localhost

2、如果在没有密码短语的情况下无法ssh到localhost,请执行以下命令:

 ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
 chmod 0600 ~/.ssh/authorized_keys

开始测试:

1、格式化文件系统:

bin/hdfs namenode -format

2、启动NameNode 守候进程和DataNode 守候进程:

sbin/start-dfs.sh

hadoop守护进程日志输出被写入$hadoop_log_dir目录(默认为$hadoop_home/logs)。

3、浏览名称节点的Web界面;默认情况下,该界面位于:

  • NameNode - http://localhost:50070/

4、使执行MapReduce作业所需的HDFS目录:

bin/hdfs dfs -mkdir /user
bin/hdfs dfs -mkdir /user/<username>

5、将输入文件复制到分布式文件系统中:

bin/hdfs dfs -put etc/hadoop input

6、运行提供的一些示例:

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar grep input output 'dfs[a-z.]+'

7、检查输出文件:将输出文件从分布式文件系统复制到本地文件系统,然后检查它们:

bin/hdfs dfs -get output output
cat output/*

查看分布式文件系统上的输出文件:

 bin/hdfs dfs -cat output/*

8、完成后,使用以下命令停止守护进程:

sbin/stop-dfs.sh

单节点YARN

您可以通过设置一些参数并运行ResourceManager守护程序和NodeManager守护程序,以伪分布式模式在YARN上运行MapReduce作业。

以下说明假设已执行上述指令的 1.~4步骤。

1、配置参数如下:etc/hadoop/mapred-site.xml:

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

etc/hadoop/yarn-site.xml:

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

2、启动 ResourceManager  和 NodeManager 守护进程:

sbin/start-yarn.sh

3、浏览ResourceManager的Web界面;默认情况下,该界面位于:

  • ResourceManager - http://localhost:8088/

4、运行MapReduce作业

5、完成后,使用以下命令停止守护进程:

sbin/stop-yarn.sh

3、完全分布式集群模式

有关设置完全分布式、非平凡集群的信息在以后章节中介绍。

猜你喜欢

转载自blog.csdn.net/xia296/article/details/87690477