BigData之Hadoop:Hadoop的簡介、深入理解、下載、案例應(yīng)用之詳細(xì)攻略
Hadoop的簡介
? ? ? Apache? Hadoop? 項目為可靠、可擴(kuò)展、分布式計算開發(fā)開源軟件。apachehadoop軟件庫是一個框架,允許使用簡單的編程模型跨計算機(jī)集群對大型數(shù)據(jù)集進(jìn)行分布式處理。它被設(shè)計成從單個服務(wù)器擴(kuò)展到數(shù)千臺機(jī)器,每臺都提供本地計算和存儲。與依賴硬件來提供高可用性不同,庫本身的設(shè)計目的是在應(yīng)用程序?qū)訖z測和處理故障,因此在一組計算機(jī)上提供高可用性服務(wù),每臺計算機(jī)都可能發(fā)生故障。
? ? ? Hadoop的框架最核心的設(shè)計就是HDFS和MapReduce。HDFS為海量的數(shù)據(jù)提供了存儲,則MapReduce為海量的數(shù)據(jù)提供了計算。Hadoop的高吞吐,海量數(shù)據(jù)處理的能力使得人們可以方便地處理海量數(shù)據(jù)。但是,Hadoop的缺點(diǎn)也和它的優(yōu)點(diǎn)同樣鮮明——延遲大,響應(yīng)緩慢,運(yùn)維復(fù)雜。
? ? ? Hadoop原本來自于谷歌一款名為MapReduce的編程模型包。谷歌的MapReduce框架可以把一個應(yīng)用程序分解為許多并行計算指令,跨大量的計算節(jié)點(diǎn)運(yùn)行非常巨大的數(shù)據(jù)集。使用該框架的一個典型例子就是在網(wǎng)絡(luò)數(shù)據(jù)上運(yùn)行的搜索算法。Hadoop最初只與網(wǎng)頁索引有關(guān),迅速發(fā)展成為分析大數(shù)據(jù)的領(lǐng)先平臺。
? ? ? ? Hadoop是一個由Apache基金會所開發(fā)的分布式系統(tǒng)基礎(chǔ)架構(gòu)。用戶可以在不了解分布式底層細(xì)節(jié)的情況下,開發(fā)分布式程序。充分利用集群的威力進(jìn)行高速運(yùn)算和存儲。Hadoop實(shí)現(xiàn)了一個分布式文件系統(tǒng)(Hadoop Distributed File System),簡稱HDFS。HDFS有高容錯性的特點(diǎn),并且設(shè)計用來部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)來訪問應(yīng)用程序的數(shù)據(jù),適合那些有著超大數(shù)據(jù)集(large data set)的應(yīng)用程序。HDFS放寬了(relax)POSIX的要求,可以以流的形式訪問(streaming access)文件系統(tǒng)中的數(shù)據(jù)。
? ? ? ? Hadoop的框架最核心的設(shè)計就是:HDFS和MapReduce。
- HDFS為海量的數(shù)據(jù)提供了存儲,
- MapReduce則為海量的數(shù)據(jù)提供了計算。MapReduce可以普遍應(yīng)用于很多大規(guī)模數(shù)據(jù)的計算問題。MapReduce是一種編程模型,用于大規(guī)模數(shù)據(jù)集(大于1TB)的并行運(yùn)算。概念"Map(映射)"和"Reduce(歸約)",是它們的主要思想,都是從函數(shù)式編程語言里借來的,還有從矢量編程語言里借來的特性。
? ? ? ? ? ?HDFS和MapReduce共同組成Hadoop分布式系統(tǒng)體系結(jié)構(gòu)的核心。HDFS在集群上實(shí)現(xiàn)了分布式文件系統(tǒng),MapReduce在集群上實(shí)現(xiàn)了分布式計算和任務(wù)處理。HDFS在MapReduce任務(wù)處理過程中提供了文件操作和存儲等支持,MapReduce在HDFS的基礎(chǔ)上實(shí)現(xiàn)了任務(wù)的分發(fā)、跟蹤、執(zhí)行等工作,并收集結(jié)果,二者相互作用,完成分布式集群的主要任務(wù)。
官網(wǎng):
https://hadoop./
Apache Hadoop 3.2.1
1、HDFS體系結(jié)構(gòu)圖
? ? ? ? ? HDFS作為分布式文件系統(tǒng)在數(shù)據(jù)管理方面可借鑒點(diǎn)——文件塊的放置。一個Block會有三份備份,一份在NameNode指定的DateNode上,一份放在與指定的DataNode不在同一臺機(jī)器的DataNode上,一根在于指定的DataNode在同一Rack上的DataNode上。備份的目的是為了數(shù)據(jù)安全,采用這種方式是為了考慮到同一Rack失敗的情況,以及不同數(shù)據(jù)拷貝帶來的性能的問題。
圖示:NameNode是管理者,DataNode是文件存儲者,Client客戶端是需要獲取分布式文件系統(tǒng)的應(yīng)用程序。
?
文件寫入
- (1)、 Client向NameNode發(fā)起文件寫入的請求。
- (2)、?NameNode根據(jù)文件大小和文件塊配置情況,返回給Client它管理的DataNode的信息。
- (3)、?Client將文件劃分為多個block,根據(jù)DataNode的地址,按順序?qū)lock寫入DataNode塊中。
文件讀取
- (1)、Client向NameNode發(fā)起讀取文件的請求。
- (2)、NameNode返回文件存儲的DataNode信息。
- (3)、Client讀取文件信息。
Hadoop的深入理解
0、深入了解Hadoop的其它相關(guān)基礎(chǔ)知識
0.1、Hbase數(shù)據(jù)管理——Hadoop database
BigData之Hbase:Hbase數(shù)據(jù)管理的簡介、下載、案例應(yīng)用之詳細(xì)攻略
0.2、Hive數(shù)據(jù)管理——建立在Hadoop上的數(shù)據(jù)倉庫基礎(chǔ)架構(gòu)
BigData之Hive:Hive數(shù)據(jù)管理的簡介、下載、案例應(yīng)用之詳細(xì)攻略
0.3、MongDB基于分布式文件存儲數(shù)據(jù)庫
BigData之MongoDB:MongoDB基于分布式文件存儲數(shù)據(jù)庫的簡介、下載、案例應(yīng)用之詳細(xì)攻略
1、Hadoop的三大特性——可靠、高效、可伸縮
? ? ? ? Hadoop是一個能夠?qū)Υ罅繑?shù)據(jù)進(jìn)行分布式處理的軟件框架。 Hadoop 以一種可靠、高效、可伸縮的方式進(jìn)行數(shù)據(jù)處理 。
- Hadoop 是可靠的,因為它假設(shè)計算元素和存儲會失敗,因此它維護(hù)多個工作數(shù)據(jù)副本,確保能夠針對失敗的節(jié)點(diǎn)重新分布處理。
- Hadoop 是高效的,因為它以并行的方式工作,通過并行處理加快處理速度。
- Hadoop 是可伸縮的,能夠處理 PB 級數(shù)據(jù)。
2、Hadoop的五大優(yōu)點(diǎn)——高可靠性、高擴(kuò)展性、高效性、高容錯性、低成本
? ? ? ? Hadoop是一個能夠讓用戶輕松架構(gòu)和使用的分布式計算平臺。用戶可以輕松地在Hadoop上開發(fā)和運(yùn)行處理海量數(shù)據(jù)的應(yīng)用程序。它主要有以下幾個優(yōu)點(diǎn):
- 1.高可靠性。Hadoop按位存儲和處理數(shù)據(jù)的能力值得人們信賴。
- 2.高擴(kuò)展性。Hadoop是在可用的計算機(jī)集簇間分配數(shù)據(jù)并完成計算任務(wù)的,這些集簇可以方便地擴(kuò)展到數(shù)以千計的節(jié)點(diǎn)中。
- 3.高效性。Hadoop能夠在節(jié)點(diǎn)之間動態(tài)地移動數(shù)據(jù),并保證各個節(jié)點(diǎn)的動態(tài)平衡,因此處理速度非???。
- 4.高容錯性。Hadoop能夠自動保存數(shù)據(jù)的多個副本,并且能夠自動將失敗的任務(wù)重新分配。
- 5.低成本。Hadoop 依賴于社區(qū)服務(wù),因此它的成本比較低,任何人都可以使用 。與一體機(jī)、商用數(shù)據(jù)倉庫以及QlikView、Yonghong Z-Suite等數(shù)據(jù)集市相比,hadoop是開源的,項目的軟件成本因此會大大降低 。
? ? ? ? Hadoop帶有用Java語言編寫的框架,因此運(yùn)行在 Linux 生產(chǎn)平臺上是非常理想的。Hadoop 上的應(yīng)用程序也可以使用其他語言編寫,比如 C++。
3、Hadoop大數(shù)據(jù)處理的意義——得益于數(shù)據(jù)提取、變形和加載的天然優(yōu)勢
? ? ? ? ?Hadoop得以在大數(shù)據(jù)處理應(yīng)用中廣泛應(yīng)用得益于其自身在數(shù)據(jù)提取、變形和加載(ETL)方面上的天然優(yōu)勢。Hadoop的分布式架構(gòu),將大數(shù)據(jù)處理引擎盡可能的靠近存儲,對例如像ETL這樣的批處理操作相對合適,因為類似這樣操作的批處理結(jié)果可以直接走向存儲。Hadoop的MapReduce功能實(shí)現(xiàn)了將單個任務(wù)打碎,并將碎片任務(wù)(Map)發(fā)送到多個節(jié)點(diǎn)上,之后再以單個數(shù)據(jù)集的形式加載(Reduce)到數(shù)據(jù)倉庫里。
Hadoop的下載
官網(wǎng)地址:https://hadoop./releases.html
? ? ? ? 為了方便起見,Hadoop作為源代碼tarball發(fā)布,并帶有相應(yīng)的二進(jìn)制tarball。下載通過鏡像站點(diǎn)分發(fā),應(yīng)該使用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:
- Download the release hadoop-X.Y.Z-src.tar.gz from a?mirror site.
- Download the signature file hadoop-X.Y.Z-src.tar.gz.asc from?Apache.
- Download the?Hadoop KEYS?file.
- gpg –import KEYS
- gpg –verify hadoop-X.Y.Z-src.tar.gz.asc
To perform a quick check using SHA-512:
- Download the release hadoop-X.Y.Z-src.tar.gz from a?mirror site.
- Download the checksum hadoop-X.Y.Z-src.tar.gz.sha512 or hadoop-X.Y.Z-src.tar.gz.mds from?Apache.
- shasum -a 512 hadoop-X.Y.Z-src.tar.gz
Hadoop的案例應(yīng)用
1、Hadoop:設(shè)置單節(jié)點(diǎn)集群
源自:https://hadoop./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>