BigData之Hadoop:Hadoop的简介、深入理解、下载、案例应用之详细攻略

BigData之Hadoop:Hadoop的简介、深入理解、下载、案例应用之详细攻略


Hadoop的简介

Apache™ Hadoop® 项目为可靠、可扩展、分布式计算开发开源软件。apachehadoop软件库是一个框架,允许使用简单的编程模型跨计算机集群对大型数据集进行分布式处理。它被设计成从单个服务器扩展到数千台机器,每台都提供本地计算和存储。与依赖硬件来提供高可用性不同,库本身的设计目的是在应用程序层检测和处理故障,因此在一组计算机上提供高可用性服务,每台计算机都可能发生故障。
      Hadoop的框架最核心的设计就是HDFSMapReduceHDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。Hadoop的高吞吐,海量数据处理的能力使得人们可以方便地处理海量数据。但是,Hadoop的缺点也和它的优点同样鲜明——延迟大,响应缓慢,运维复杂。
      Hadoop原本来自于谷歌一款名为MapReduce的编程模型包。谷歌的MapReduce框架可以把一个应用程序分解为许多并行计算指令,跨大量的计算节点运行非常巨大的数据集。使用该框架的一个典型例子就是在网络数据上运行的搜索算法。Hadoop最初只与网页索引有关,迅速发展成为分析大数据的领先平台。

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。
        Hadoop的框架最核心的设计就是:HDFSMapReduce

  • HDFS为海量的数据提供了存储
  • MapReduce则为海量的数据提供了计算。MapReduce可以普遍应用于很多大规模数据的计算问题。MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。

HDFSMapReduce共同组成Hadoop分布式系统体系结构的核心。HDFS在集群上实现了分布式文件系统,MapReduce在集群上实现了分布式计算和任务处理。HDFSMapReduce任务处理过程中提供了文件操作和存储等支持,MapReduceHDFS的基础上实现了任务的分发、跟踪、执行等工作,并收集结果,二者相互作用,完成分布式集群的主要任务。

官网
https://hadoop.apache.org/
Apache Hadoop 3.2.1

1、HDFS体系结构图

HDFS作为分布式文件系统在数据管理方面可借鉴点——文件块的放置。一个Block会有三份备份,一份在NameNode指定的DateNode上,一份放在与指定的DataNode不在同一台机器的DataNode上,一根在于指定的DataNode在同一Rack上的DataNode上。备份的目的是为了数据安全,采用这种方式是为了考虑到同一Rack失败的情况,以及不同数据拷贝带来的性能的问题。

图示:NameNode是管理者,DataNode是文件存储者,Client客户端是需要获取分布式文件系统的应用程序。

文件写入

  • (1)、 Client向NameNode发起文件写入的请求。
  • (2)、 NameNode根据文件大小和文件块配置情况,返回给Client它管理的DataNode的信息。
  • (3)、 Client将文件划分为多个block,根据DataNode的地址,按顺序将block写入DataNode块中。

文件读取

  • (1)、Client向NameNode发起读取文件的请求。
  • (2)、NameNode返回文件存储的DataNode信息。
  • (3)、Client读取文件信息。

Hadoop的深入理解

0、深入了解Hadoop的其它相关基础知识

0.1、Hbase数据管理——Hadoop database

BigData之Hbase:Hbase数据管理的简介、下载、案例应用之详细攻略

0.2、Hive数据管理——建立在Hadoop上的数据仓库基础架构

BigData之Hive:Hive数据管理的简介、下载、案例应用之详细攻略

0.3、MongDB基于分布式文件存储数据库

BigData之MongoDB:MongoDB基于分布式文件存储数据库的简介、下载、案例应用之详细攻略

1、Hadoop的三大特性——可靠、高效、可伸缩

Hadoop是一个能够对大量数据进行分布式处理的软件框架。 Hadoop 以一种可靠、高效、可伸缩的方式进行数据处理

  • Hadoop 是可靠的,因为它假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理。
  • Hadoop 是高效的,因为它以并行的方式工作,通过并行处理加快处理速度。
  • Hadoop 是可伸缩的,能够处理 PB 级数据。

2、Hadoop的五大优点——高可靠性、高扩展性、高效性、高容错性、低成本

Hadoop是一个能够让用户轻松架构和使用的分布式计算平台。用户可以轻松地在Hadoop上开发和运行处理海量数据的应用程序。它主要有以下几个优点:

  • 1.高可靠性。Hadoop按位存储和处理数据的能力值得人们信赖。
  • 2.高扩展性。Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。
  • 3.高效性。Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快 。
  • 4.高容错性。Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。
  • 5.低成本。Hadoop 依赖于社区服务,因此它的成本比较低,任何人都可以使用 。与一体机、商用数据仓库以及QlikView、Yonghong Z-Suite等数据集市相比,hadoop是开源的,项目的软件成本因此会大大降低 。

Hadoop带有用Java语言编写的框架,因此运行在 Linux 生产平台上是非常理想的。Hadoop 上的应用程序也可以使用其他语言编写,比如 C++。

3、Hadoop大数据处理的意义——得益于数据提取、变形和加载的天然优势

Hadoop得以在大数据处理应用中广泛应用得益于其自身在数据提取、变形和加载(ETL)方面上的天然优势。Hadoop的分布式架构,将大数据处理引擎尽可能的靠近存储,对例如像ETL这样的批处理操作相对合适,因为类似这样操作的批处理结果可以直接走向存储。Hadoop的MapReduce功能实现了将单个任务打碎,并将碎片任务(Map)发送到多个节点上,之后再以单个数据集的形式加载(Reduce)到数据仓库里。

Hadoop的下载

官网地址:https://hadoop.apache.org/releases.html

为了方便起见,Hadoop作为源代码tarball发布,并带有相应的二进制tarball。下载通过镜像站点分发,应该使用GPG或SHA-512检查是否有篡改。

Version Release date Source download Binary download Release notes
3.3.0 2020 Jul 14 source (checksum signature) binary (checksum signature) 
binary-aarch64 (checksum signature)
Announcement
2.10.0 2019 Oct 29 source (checksum signature) binary (checksum signature) Announcement
3.1.3 2019 Oct 21 source (checksum signature) binary (checksum signature) Announcement
3.2.1 2019 Sep 22 source (checksum signature) binary (checksum signature) Announcement
2.9.2 2018 Nov 19 source (checksum signature) binary (checksum signature) Announcement

To verify Hadoop releases using GPG:

  1. Download the release hadoop-X.Y.Z-src.tar.gz from a mirror site.
  2. Download the signature file hadoop-X.Y.Z-src.tar.gz.asc from Apache.
  3. Download the Hadoop KEYS file.
  4. gpg –import KEYS
  5. gpg –verify hadoop-X.Y.Z-src.tar.gz.asc

To perform a quick check using SHA-512:

  1. Download the release hadoop-X.Y.Z-src.tar.gz from a mirror site.
  2. Download the checksum hadoop-X.Y.Z-src.tar.gz.sha512 or hadoop-X.Y.Z-src.tar.gz.mds from Apache.
  3. shasum -a 512 hadoop-X.Y.Z-src.tar.gz

Hadoop的案例应用

1、Hadoop:设置单节点集群

源自:https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html

Installing Software
If your cluster doesn’t have the requisite software you will need to install it.

For example on Ubuntu Linux:

  $ sudo apt-get install ssh
  $ sudo apt-get install pdsh
Download
To get a Hadoop distribution, download a recent stable release from one of the Apache Download Mirrors.

Prepare to Start the Hadoop Cluster
Unpack the downloaded Hadoop distribution. In the distribution, edit the file etc/hadoop/hadoop-env.sh to define some parameters as follows:

  # set to the root of your Java installation
  export JAVA_HOME=/usr/java/latest
Try the following command:

  $ bin/hadoop
This will display the usage documentation for the hadoop script.

Now you are ready to start your Hadoop cluster in one of the three supported modes:

Local (Standalone) Mode
Pseudo-Distributed Mode
Fully-Distributed Mode
Standalone Operation
By default, Hadoop is configured to run in a non-distributed mode, as a single Java process. This is useful for debugging.

The following example copies the unpacked conf directory to use as input and then finds and displays every match of the given regular expression. Output is written to the given output directory.

  $ mkdir input
  $ cp etc/hadoop/*.xml input
  $ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar grep input output 'dfs[a-z.]+'
  $ cat output/*
Pseudo-Distributed Operation
Hadoop can also be run on a single-node in a pseudo-distributed mode where each Hadoop daemon runs in a separate Java process.

Configuration
Use the following:

etc/hadoop/core-site.xml:

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>
etc/hadoop/hdfs-site.xml:

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>
(0)

相关推荐