一、Hadoop概述
Hadoop是一個由Apache開發和維護的開源軟體框架,它是一個分散式計算平台,主要用於存儲和處理大數據(Big Data)應用。Hadoop的核心組件包括Hadoop Distributed File System (HDFS)和MapReduce分散式計算框架。
二、Hadoop發展歷史
2003年,Google公司發布了一篇名為”Google File System”的技術論文,描述了他們如何處理大規模數據。2004年,Google發布了第一篇MapReduce的論文,描述了如何利用分散式計算框架的優勢,處理分散式資源。
2005年,Doug Cutting與Michael J. Cafarella研發了一個名為Nutch的搜索引擎項目。為了讓Nutch能夠處理Google級別的數據規模,Doug Cutting決定基於Google的技術論文開發一個用於存儲和處理大規模數據的分散式計算平台,這就是Hadoop。
三、Hadoop架構
Hadoop平台中的主要組件是Hadoop Distributed File System(HDFS)和MapReduce。其中HDFS是分散式文件系統,用於將數據存儲在物理集群節點上。MapReduce是分散式計算框架,用於處理在HDFS上存儲的數據。
整體上,Hadoop的架構可以被分為五個層次:存儲層、計算層、管理層、安全層和應用層。
<dependencies>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-core</artifactId>
<version>1.2.1</version>
</dependency>
</dependencies>
四、Hadoop輸入輸出
Hadoop支持多種不同的文件格式和協議來輸入和輸出數據。Hadoop可以在輸入和輸出數據的各自格式上進行自動轉換。其中,輸入數據可以是文本文件、Avro二進位數據、SequenceFile、普通文件和HBase表。輸出數據可以是文本文件、SequenceFile、Avro二進位數據、HBase表等。
public class Map extends Mapper<Object, Text, Text, IntWritable>
{
public void map(Object key, Text value, Context context)
throws IOException, InterruptedException
{
String[] words = value.toString().split(" ");
for (String word : words)
{
context.write(new Text(word), new IntWritable(1));
}
}
}
五、Hadoop生態圈
Hadoop生態圈包括HBase、ZooKeeper、Hive、Pig、Mahout等組件。HBase是一個分散式列存儲數據存儲系統,它基於Google的Bigtable構建。ZooKeeper是一個開源的分散式系統協調器,它的主要作用是為分散式應用提供協調服務。Hive是一個基於Hadoop的數據倉庫工具,可以將結構化數據映射到一個資料庫上,並支持類SQL的操作。Pig是一個高級的語言/平台,用於批量處理大型數據集。Mahout是一個純Java開發的機器學習庫,可以作為Hadoop的擴展來使用。
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId>
<version>2.3.0</version>
</dependency>
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/243039.html