hadoop基礎學習

MR系類:java

hadoop生態node

>MapReduce:分佈式處理算法

>Hdfs:hadoop distribut file systemshell

>其餘相關框架數據庫

->unstructured data:收集日誌 flume,scribeapi

->structured data:sqoop hdfs與關係型數據庫相互轉換服務器

->OLTP:HBASE(低延時) online transection process 網絡

->monitor/manage:監控集羣狀態併發

->Hight level interfaces:JAQL HIVE框架

->support:

->workflow:

->more Hight level interfaces:封裝了算法的高級接口 數據挖掘算法BI

 

hadoop:分佈式存儲和計算平臺

hadoop核心系統:

>hdfs:

->主從分佈式:

namenode(主節點):管理從節點,提供API,管理文件與block,blockdatanode之間的關係。(存儲單位爲block

datanode(從節點):存儲數據,文件被分紅block存儲在磁盤,同時block是有副本的。

>mapReduce:

->主從分佈式:

jobTracker(主節點):提供api,分配任務給tasktracker,監控其執行狀況

taskTracker(從節點):執行分配的計算任務。

hadoop分佈式特色:

>擴容能力:

>成本低:低廉主機,團體集羣。

>高效率:並行執行

>可靠性:自動維護數據副本

 

hadoop集羣:

>僞分佈:

①安裝jdkhadoop軟件

>真實分佈:

 

HDFS學習筆記:

>概念:

->dfs:分佈式文件系統,適合於一次寫入屢次查詢的狀況,不支持併發寫,不適合小文件。

->namenode:維護和管理目錄系統,

->HDFS:

->namenode:元數據(目錄數據)

->fsimage:目錄數據

->edit:用戶操做的事務,當事務完成後,會將新的目錄數據加入fsimage.

->secondaryNode:合併fsimageedit

->datanode:物理數據(原始數據):物理數據自己

->文件塊block:默認大小64M,當不足64M時,佔用實際的大小的物理空間。

->replication:副本,默認三個。優先放在本機的datanode中。

->關於HDFSHA

->在配置文件中設置多個namenodecopy

->secondaryNode:將edit合併到fsimage

>shell接口:

->hadoop fs 命令 -ls,-lsr,-put,-get,-text

->hadoop fs ls = hadoop fs -ls hdfs://hadoop:9000/

>java接口:

->IOUtil鏈接普通文件系統和HDFS

->FileSystemhds中定義的文件系統對象

>RPC遠程過程調用:Remote process call 不一樣進程間的方法調用

->客戶端調用服務器端實現VersionedProtocol協議的接口中的方法。

->hadoop中存在的5的服務進程,就是RPC的服務器端

 The NameNode controls two critical tables:

    1)  filename->blocksequence (namespace) 外存中,靜態的,存放在fsimage

    2)  block->machinelist ("inodes") 內存中,namenode啓動的時候重建。

 

hdfs的惟一一個核心類:FileSystem

 

MapReduce:

 

八個步驟:

1>Map

1.1>解析hdfs中的文件,每行數據造成<k1,v1> :k1爲每行開始位置,v1爲每行的內容

1.2>覆蓋map(),接受1.1產生的<k1,v1>進行處理,轉換成新的<k2,v2> :如對每行的數據即v1進行拆分,就能夠獲得多個v2

1.3>1.2中輸出的數據<k2,v2>進行分區,默認爲1個:

1.4>1.3中輸出的數據<k3,v3>進行排序(按照k3),分組(相同key的不一樣value放在一個集合中),輸出<k4,{v4}>

1.5>1.4中輸出的數據進行規約。

 

2>Reduce

2.1>多個map任務的輸出,按照不一樣的分區,經過網絡 copy到不一樣的reduce節點中:

2.2>2.1中得到的數據,進行合併排序,覆蓋reduce函數,接受集合數據,統計k4對應集合中全部值的和,輸出<k5,v5>:

2.3>2.2中產生的<k5,v5>的輸出,寫回hdfs中。

 

 

 

 

 

Hadoop數據類型:

Hadoop key/value數據必須實現的接口:

writeable接口:

public interface Writable {

   * Serialize the fields of this object to <code>out</code>.

  void write(DataOutput out) throws IOException;

   * Deserialize the fields of this object from <code>in</code>.  

  void readFields(DataInput in) throws IOException;

}

Hadoop key數據必須實現的接口:

Comparable接口:

WritableComparable接口:

comparaTo()方法

 

1>序列化和反序列化必須實現一下幾個方法:

equals()

hashcode()

tostring()

④必須有無參構造方法,爲了方便反射建立對象。

2>序列化:將結構化對象轉化爲字節流,以便在網絡傳輸或者保存在磁盤進行永久存儲。

·反序列化:將序列化字節流,反序列化爲結構化對象。

爲了實現對序列化字節對象的直接比較,

comparator接口:

相關文章
相關標籤/搜索