當前位置:首頁 » 文件管理 » hadooplzo解壓

hadooplzo解壓

發布時間: 2022-10-17 22:53:31

⑴ 搭建hadoop集群,常用配置文件是什麼,以及配置哪些屬性

一. 簡介

參考了網上許多教程,最終把hadoop在ubuntu14.04中安裝配置成功。下面就把詳細的安裝步驟敘述一下。我所使用的環境:兩台ubuntu 14.04 64位的台式機,hadoop選擇2.7.1版本。(前邊主要介紹單機版的配置,集群版是在單機版的基礎上,主要是配置文件有所不同,後邊會有詳細說明)

二. 准備工作

2.1 創建用戶

創建用戶,並為其添加root許可權,經過親自驗證下面這種方法比較好。

1 sudo adser hadoop2 sudo vim /etc/sudoers3 # 修改內容如下:4 root ALL = (ALL)ALL5 hadoop ALL = (ALL)ALL

給hadoop用戶創建目錄,並添加到sudo用戶組中,命令如下:

1 sudo chown hadoop /home/hadoop2 # 添加到sudo用戶組3 sudo adser hadoop sudo

最後注銷當前用戶,使用新創建的hadoop用戶登陸。

2.2安裝ssh服務

ubuntu中默認是沒有裝ssh server的(只有ssh client),所以先運行以下命令安裝openssh-server。安裝過程輕松加愉快~

sudo apt-get install ssh openssh-server

2.3 配置ssh無密碼登陸

直接上代碼:執行完下邊的代碼就可以直接登陸了(可以運行ssh localhost進行驗證)

1 cd ~/.ssh# 如果找不到這個文件夾,先執行一下 "ssh localhost"2 ssh-keygen -t rsa3 cp id_rsa.pub authorized_keys

注意:

這里實現的是無密登陸自己,只適用與hadoop單機環境。如果配置Hadoop集群設置Master與Slave的SSH無密登陸可

三. 安裝過程

3.1 下載hadoop安裝包

有兩種下載方式:

1. 直接去官網下載:

2. 使用wget命令下載:

3.2 配置hadoop

1. 解壓下載的hadoop安裝包,並修改配置文件。我的解壓目錄是(/home/hadoop/hadoop-2.7.1),即進入/home/hadoop/文件夾下執行下面的解壓縮命令。

tar -zxvf hadoop-2.7.1.tar.gz

2. 修改配置文件:(hadoop2.7.1/etc/hadoop/)目錄下,hadoop-env.sh,core-site.xml,mapred-site.xml.template,hdfs-site.xml。

(1). core-site.xml 配置:其中的hadoop.tmp.dir的路徑可以根據自己的習慣進行設置。

至此,wordcount demo 運行結束。

六. 總結

配置過程遇到了很多問題,最後都一一解決,收獲很多,特此把這次配置的經驗分享出來,方便想要配置hadoop環境的各位朋友~

(Hadoop集群安裝配置過程基本和單機版是一樣的,主要是在配置文件方面有所區別,以及ssh無密登陸要求master和slave能夠互相無密登陸。

⑵ 如何在windows下安裝hadoop

Hadoop三種安裝模式:單機模式,偽分布式,真正分布式

一 單機模式standalone
單機模式是Hadoop的默認模式。當首次解壓Hadoop的源碼包時,Hadoop無法了解硬體安裝環境,便保守地選擇了最小配置。在這種默認模式下所有3個XML文件均為空。當配置文件為空時,Hadoop會完全運行在本地。因為不需要與其他節點交互,單機模式就不使用HDFS,也不載入任何Hadoop的守護進程。該模式主要用於開發調試MapRece程序的應用邏輯。

二 偽分布模式安裝
tar xzvf hadoop-0.20.2.tar.gz
Hadoop的配置文件:
conf/hadoop-env.sh 配置java_HOME
core-site.xml 配置HDFS節點名稱和地址
hdfs-site.xml 配置HDFS存儲目錄,復制數量
mapred-site.xml 配置maprece的jobtracker地址

配置ssh,生成密匙,使到ssh可以免密碼連接
(RSA演算法,基於因數不對稱加密:公鑰加密私鑰才能解密,私鑰加密公鑰才能解密)
cd /root
ssh -keygen -t rsa
cd .ssh
cp id_rsa.pub authorized_keys覆蓋公鑰,就能免密碼連接

啟動Hadoop bin/start-all.sh
停止Hadoop bin/stop-all.sh

三 完全分布式模式
1. 配置etc/hosts文件,使主機名解析為IP 或者使用DNS服務解析主機名
2. 建立hadoop運行用戶: useradd grid>passwd grid
3. 配置ssh密碼連入: 每個節點用grid登錄,進入主工作目錄,ssh -keygen -t rsa生產公鑰,然後將每個節點的公鑰復制到同一個文件中,再將這個包含所有節點公鑰的文件復制到每個節點authorized_keys目錄,這個每個節點之間彼此可以免密碼連接
4. 下載並解壓hadoop安裝包
5. 配置namenode,修改site文件
6. 配置hadoop-env.sh
7. 配置masters和slaves文件
8. 向各個節點復制hadoop
9. 格式化namenode
10.啟動hadoop
11.用jps檢驗各後台進程是否成功啟動。

⑶ 我在解壓hadoop壓縮包的時候遇到這問題怎麼辦

I would go back and re-gzip the tar file though (to save space):
gzip xxxxxx.x.x.tar
tar -zxvf xxxxxx.x.x.tar.gz
想刨根問底的可以查下他的意思,在看下TAR 指令的用法,。
總之:我出現這個錯誤時,就是把指令改為:
tar -xvf xxxx.tar.gz
然後指令就運行了。。

⑷ HDFS文件

Hadoop支持的文件系統由很多(見下圖),HDFS只是其中一種實現。Java抽象類 org.apache.hadoop.fs.FileSystem 定義了Hadoop中一個文件系統的客戶端介面,並且該抽象類有幾個具體實現。Hadoop一般使用URI(下圖)方案來選取合適的文件系統實例進行交互。

特別的,HDFS文件系統的操作可以使用 FsSystem shell 、客戶端(http rest api、Java api、C api等)。

FsSystem shell 的用法基本同本地shell類似,命令可參考 FsSystem shell

Hadoop是用Java寫的,通過Java Api( FileSystem 類)可以調用大部分Hadoop文件系統的交互操作。更詳細的介紹可參考 hadoop Filesystem 。

非Java開發的應用可以使用由WebHDFS協議提供的HTTP REST API,但是HTTP比原生的Java客戶端要慢,所以不到萬不得已盡量不要使用HTTP傳輸特大數據。通過HTTP來訪問HDFS有兩種方法:

兩種如圖

在第一種情況中,namenode和datanode內嵌的web服務作為WebHDFS的端節點運行(是否啟用WebHDFS可通過dfs.webhdfs.enabled設置,默認為true)。文件元數據在namenode上,文件讀寫操作首先被發往namenode,有namenode發送一個HTTP重定向至某個客戶端,指示以流的方式傳輸文件數據的目的或源datanode。

第二種方法依靠一個或多個獨立代理伺服器通過HTTP訪問HDFS。所有集群的網路通信都需要通過代理,因此客戶端從來不直接訪問namenode或datanode。使用代理後可以使用更嚴格的防火牆策略和帶寬策略。

HttpFs代理提供和WebHDFS相同的HTTP介面,這樣客戶端能夠通過webhdfs URI訪問介面。HttpFS代理啟動獨立於namenode和datanode的守護進程,使用httpfs.sh 腳本,默認在一個不同的埠上監聽(14000)。

下圖描述了

讀文件時客戶端與 HDFS 中的 namenode, datanode 之間的數據流動。

對上圖的解釋如下:

在讀取過程中, 如果 FSDataInputStream 在和一個 datanode 進行交流時出現了一個錯誤,他就去試一試下一個最接近的塊,他當然也會記住剛才發生錯誤的 datanode 以至於之後不會再在這個 datanode 上進行沒必要的嘗試。 DFSInputStream 也會在 datanode 上傳輸出的數據上核查檢查數(checknums).如果損壞的塊被發現了, DFSInputStream 就試圖從另一個擁有備份的 datanode 中去讀取備份塊中的數據。

在這個設計中一個重要的方面就是客戶端直接從 datanode 上檢索數據,並通過 namenode 指導來得到每一個塊的最佳 datanode。這種設計允許 HDFS 擴展大量的並發客戶端,因為數據傳輸只是集群上的所有 datanode 展開的。期間,namenode 僅僅只需要服務於獲取塊位置的請求(塊位置信息是存放在內存中,所以效率很高)。如果不這樣設計,隨著客戶端數據量的增長,數據服務就會很快成為一個瓶頸。

我們知道,相對於客戶端(之後就是 maprece task 了),塊的位置有以下可能性:

我們認為他們對於客戶端的帶寬遞減,距離遞增(括弧中表示距離)。示意圖如下:

如果集群中的機器都在同一個機架上,我們無需其他配置,若集群比較復雜,由於hadoop無法自動發現網路拓撲,所以需要額外配置網路拓撲。

基本讀取程序,將文件內容輸出到console

FileSystemCat

隨機讀取

展開原碼

下圖描述了寫文件時客戶端與 HDFS 中的 namenode, datanode 之間的數據流動。

對上圖的解釋如下:

如果在任何一個 datanode 在寫入數據的時候失敗了,接下來所做的一切對客戶端都是透明的:首先, pipeline 被關閉,在確認隊列中的剩下的包會被添加進數據隊列的起始位置上,以至於在失敗的節點下游的任 何節點都不會丟失任何的包。然後與 namenode 聯系後,當前在一個好的 datanode 會聯系 namenode, 給失敗節點上還未寫完的塊生成一個新的標識ID, 以至於如果這個失敗的 datanode 不久後恢復了,這個不完整的塊將會被刪除。失敗節點會從 pipeline 中移除,然後剩下兩個好的 datanode 會組成一個的新的 pipeline ,剩下的 這些塊的包(也就是剛才放在數據隊列隊首的包)會繼續寫進 pipeline 中好的 datanode 中。最後,namenode 注意到塊備份數小於規定的備份數,他就安排在另一個節點上創建完成備份,直接從已有的塊中復制就可以。然後一直到滿足了備份數( dfs.replication )。如果有多個節點的寫入失敗了,如果滿足了最小備份數的設置( dfs.namenode.repliction.min ),寫入也將會成功,然後剩下的備份會被集群非同步的執行備份,直到滿足了備份數( dfs.replication )。

創建目錄

文件壓縮有兩大好處:

Hadoop 對於壓縮格式的是自動識別。如果我們壓縮的文件有相應壓縮格式的擴展名(比如 lzo,gz,bzip2 等)。Hadoop 會根據壓縮格式的擴展名自動選擇相對應的解碼器來解壓數據,此過程完全是 Hadoop 自動處理,我們只需要確保輸入的壓縮文件有擴展名。

Hadoop中有多種壓縮格式、演算法和工具,下圖列出了常用的壓縮方法。

表中的「是否可切分」表示對應的壓縮演算法是否支持切分,也就是說是否可以搜索數據流的任意位置並進一步往下讀取數據,可切分的壓縮格式尤其適合MapRece。

所有的壓縮演算法都需要權衡空間/時間:壓縮和解壓縮速度更快,其代價通常是只能節省少量的空間。不同的壓縮工具有不同的特性:

更詳細的比較如下

1.壓縮性能比較

2.優缺點

另外使用hadoop原生(native)類庫比其他java實現有更快的壓縮和解壓縮速度。特徵比較如下:

使用容器文件格式結合壓縮演算法也能更好的提高效率。順序文件、Arvo文件、ORCFiles、Parqurt文件同時支持壓縮和切分。

壓縮舉例(Java)

壓縮

解壓縮

六、文件序列化

序列化是指將結構化數據轉換為位元組流以便在網路上傳輸或寫到磁碟進行永久存儲。反序列化獅子將位元組流轉換回結構化對象的逆過程。

序列化用於分布式數據處理的兩大領域:進程間通信和永久存儲。

對序列化的要求時是格式緊湊(高效使用存儲空間)、快速(讀寫效率高)、可擴展(可以透明地讀取老格式數據)且可以互操作(可以使用不同的語言讀寫數據)。

Hadoop使用的是自己的序列化格式 Writable ,它絕對緊湊、速度快,但不太容易用java以外的語言進行擴展或使用。

當然,用戶也可以使用其他序列化框架或者自定義序列化方式,如 Avro 框架。

Hadoop內部還使用了 Apache Thrift 和 Protocal Buffers 來實現RPC和數據交換。

⑸ 坑爹的Apache hbase 64位機裝配Snappy終於成功了怎麼解決

1.安裝基本tool
yum install gcc c++, autoconf, automake, libtool, Java 6, JAVA_HOME set, Maven 3,svn

yum Error: Cannot retrieve repository metadata (repomd.xml) for repository: xxxxx

so vim /etc/yum.repos.d/xxxxx.repo

將項[flexbox]中的enabled=1改為enabled=0

解決yum源的問題。

2.安裝Snappy
下載snappy
wget http://snappy.googlecode.com/files/snappy-1.1.1.tar.gz
然後解壓後,執行三步驟:
./configure
make
sudo make install
默認安裝路徑:/usr/local/lib下面

檢查安裝是否成功
ls /usr/local/lib/libsn*

3.安裝hadoop-snappy
3.1下載hadoop-snappy源碼
svn checkout http://hadoop-snappy.googlecode.com/svn/trunk/ hadoop-snappy
3.2.安裝hadoop-snappy
cd hadoop-snappy
mvn package

4.hadooo中部署snappy
解壓hadoop-snappy-0.0.1-SNAPSHOT.tar.gz文件,會生成hadoop-snappy-0.0.1-SNAPSHOT目錄,拷貝這個目錄下相關文件到$HADOOP_HOME/lib/native/Linux-amd64-64
cp -r /hadoop-snappy-0.0.1-SNAPSHOT/lib/native/Linux-amd64-64/* $HADOOP_HOME/lib/native/Linux-amd64-64
將target目錄下的hadoop-snappy-0.0.1-SNAPSHOT.jar拷貝到$HADOOP_HOME/lib/目錄下。
修改三個文件:
hadoop-env.sh,增加內容如下:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HADOOP_HOME/lib/native/Linux-amd64-64/:/usr/local/lib/
修改core-site.xml文件,增加紅色字體部分
<property>
<name>io.compression.codecs</name>
<value>
org.apache.hadoop.io.compress.GzipCodec,
org.apache.hadoop.io.compress.DefaultCodec,
org.apache.hadoop.io.compress.BZip2Codec,
com.hadoop.compression.lzo.LzoCodec,
com.hadoop.compression.lzo.LzopCodec,
org.apache.hadoop.io.compress.SnappyCodec
</value>
</property>

5.往HBase中使用壓縮方式
當hadoop的snappy配置成功後,配置hbase就很簡單了,兩個步驟:
第一步驟復制相關jar包
cp -r $HADOOP_HOME/lib/native/Linux-amd64-64/* $HBASE_HOME/lib/native/Linux-amd64-64/*
這里需要注意下,有些版本在安裝過程中,沒有這個Linux-amd64-64這個目錄,需要手工創建下。
第二步驟配置hbase-env.sh環境變數
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HADOOP_HOME/lib/native/Linux-amd64-64/:/usr/local/lib/

export HBASE_LIBRARY_PATH=$HBASE_LIBRARY_PATH:$HBASE_HOME/lib/native/Linux-amd64-64/:/usr/local/lib/

6、重啟Hadoop、HBase 檢查安裝是否成功
cd $HBASE_HOME/bin
./hbase org.apache.hadoop.hbase.util.CompressionTest /tmp/testfile snappy
結果:Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

坑爹的Apache官網提供的是32位編譯的,在64位伺服器上會有問題。官方竟然沒有提供64位版本,要使用得自己編譯。

7.編譯hadoop2.2.0

7.1 yum install cmake zlib1g-dev pkg-config libssl-dev

7.2 安裝protobuf-2.5.0

很多博客的protobuf的安裝都是shit.不知道他們實踐過沒有,老是來去。
下載protobuf-2.5.0.tar.gz,解壓。

sudo vim /etc/profile
#protobuf
export PROTOC_HOME=/opt/protobuf-2.5.0

export PATH=$PATH:$PROTOC_HOME/src

source /etc/profile
$protoc --version
libprotoc.2.5.0
ok就這樣。根本不需要什麼configure --prefix,make,make install這么麻煩,也不成功。

7.3 下載hadoop2.2.0源碼

Download Hadoop sources.
Patch sources:
cd hadoop-2.2.0-src
wget https://issues.apache.org/jira/secure/attachment/12614482/HADOOP-10110.patch
patch -p0 < HADOOP-10110.patch

maven國外伺服器可能連不上,maven配置一下國內鏡像,在maven目錄下,conf/settings.xml,在<mirrors></mirros>里添加,原本的不要動
<mirror>
<id>nexus-osc</id>
<mirrorOf>*</mirrorOf>
<name>Nexusosc</name>
<url>http://maven.oschina.net/content/groups/public/</url>
</mirror>
同樣,在<profiles></profiles>內新添加
<profile>
<id>jdk-1.7</id>
<activation>
<jdk>1.4</jdk>
</activation>
<repositories>
<repository>
<id>nexus</id>
<name>local private nexus</name>
<url>http://maven.oschina.net/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>nexus</id>
<name>local private nexus</name>
<url>http://maven.oschina.net/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>

7.4 編譯mvn package -Pdist,native -DskipTests -Dtar -rf :hadoop-common

編譯完成了後,cd hadoop-2.2.0-src/hadoop-dist/target/hadoop-2.2.0

file 一下native下面的so文件

將 native/*再cp 到$hadoop_home/bin的各個data node的native/* 和native/Linux-amd64-64下。

重新運行測試,結果

⑹ 如何使用Hadoop流LZO壓縮序列文件

hadoop對於壓縮格式的是透明識別,我們的MapRece任務的執行是透明的,hadoop能夠自動為我們 將壓縮的文件解壓,而不用我們去關心。
如果我們壓縮的文件有相應壓縮格式的擴展名(比如lzo,gz,bzip2等),hadoop就會根據擴展名去選擇解碼器解壓。

⑺ hadoop-lzo安裝有什麼作用

lzo壓縮格式有很快的壓縮/解壓速度和合理的壓縮率,並且支持分塊(split),所以lzo是目前在Hadoop中最流行的壓縮格式。hadoop中的lzo不是自帶的,如果要支持lzo,需要另外安裝。

⑻ hadoop lzo 壓縮比多高

大概 10:1 。

⑼ 如何在windows下安裝hadoop

1、安裝Cygwin
下載cygwin的setup.exe,雙擊運行:

選擇從Internet安裝:

設置安裝目錄:

設置安裝包目錄:

設置「Internet Connection」的方式,選擇「Direct Connection」:

選擇一個下載站點:

「下一步」之後,可能會彈出下圖的「Setup Alert」對話框,直接「確定」即可

在「Select Packages」對話框中,必須保證「Net Category」下的「OpenSSL」被安裝:

如果還打算在eclipse 上編譯Hadoop,則還必須安裝「Base Category」下的「sed」:

「Devel Category」下的subversion 建議安裝:

下載並安裝:

當下載完後,會自動進入到「setup」的對話框:

在上圖所示的對話框中,選中「Create icon on Desktop」,以方便直接從桌面上啟動
Cygwin,然後點擊「完成」按鈕。至此,Cgywin 已經安裝完成。

2、配置環境變數
需要配置的環境變數包括PATH 和JAVA_HOME:將JDK 的bin 目錄、Cygwin 的bin 目錄
以及Cygwin 的usr\bin(sbin)目錄都添加到PATH 環境變數中;JAVA_HOME 指向JRE 安裝目錄。

3、windows系統上運行hadoop集群,偽分布式模式安裝步驟:
①啟動cygwin,解壓hadoop安裝包。通過cygdrive(位於Cygwin根目錄中)可以直接映射到windows下的各個邏輯磁碟分區。例如hadoop安裝包放在分區D:\下,則解壓的命令為$ tar -zxvf /cygdrive/d/hadoop-0.20.2.tar.gz,解壓後可使用ls命令查看,如下圖:
默認的解壓目錄為用戶根目錄,即D:\cygwin\home\lsq(用戶帳戶)。
②編輯conf/hadoop-env.sh文件,將JAVA_HOME變數設置為java的安裝目錄。例如java安裝在目錄C:\Program Files\java\jdk1.6.0_13,如果路徑沒空格,直接配置即可。存在空格,需將Program Files縮寫成Progra_1,如下圖:

③依次編輯conf目錄下的core-site.xml、mapred-site.xml和hdfs-site.xml文件,如下圖:

④安裝配置SSH

點擊桌面上的Cygwin圖標,啟動Cygwin,執行ssh-host-config命令,然後按下圖上的選擇輸入:

當提示Do you want to use a different name?輸入yes,這步是配置安裝的sshd服務,以哪個用戶登錄,默認是cyg_server這個用戶,這里就不事先新建cyg_server這個用戶,用當前本機的超管本地用戶:chenx,後續根據提示,2次輸入這個賬戶的密碼

出現Host configuration finished. Have fun! 一般安裝順利完成。如下圖:

輸入命令$ net start sshd,啟動SSH,如下圖:

註:sshd服務安裝完之後,不會默認啟動,如果啟動報登錄失敗,不能啟動,可在服務屬性-Log On窗口手工修改,在前述的過程之中,cygwin不會校驗密碼是否正確,應該只是校驗了2次的輸入是否一致,然後再手工啟動。不知道為什麼,sshd服務如果選擇local system的登錄方式,後續會有問題,所以sshd服務最好設置成當前的登錄用戶。

⑤配置ssh登錄
執行ssh-keygen命令生成密鑰文件

輸入如下命令:
cd ~/.ssh
ls -l
cat id_rsa.pub >> authorized_keys

完成上述操作後,執行exit命令先退出Cygwin窗口,如果不執行這一步操作,下面的操作可能會遇到錯誤。接下來,重新運行Cygwin,執行ssh localhost命令,在第一次執行ssh localhost時,會有「are you sure you want to continue connection<yes/no>?」提示,輸入yes,然後回車即可。當出現下圖提示,即順利完成該步:

⑥hadoop運行
格式化namenode
打開cygwin窗口,輸入如下命令:
cd hadoop-0.20.2
mkdir logs
bin/hadoop namenode –format

啟動Hadoop
在Cygwin 中,進入hadoop 的bin 目錄,
運行./start-all.sh 啟動hadoop;
可以執行./hadoop fs -ls /命令,查看hadoop 的根目錄;
可以執行jps 查看相關進程;
如下圖:(如果顯示和下圖類似,一般hadoop安裝/啟動成功)

⑽ hadoop文件格式和壓縮

Hadoop中的文件格式大致上分為面向行和面向列兩類:

面向行:TextFile、SequenceFile、MapFile、Avro Datafile

二進制格式文件大小比文本文件大。

生產環境常用,作為原始表的存儲格式,會佔用更多磁碟資源,對它的 解析開銷一般會比二進制格式高 幾十倍以上。

Hadoop API 提供的一種二進制文件,它將數據以<key,value>的形式序列化到文件中。這種二進制文件內部使用Hadoop 的標準的Writable 介面實現序列化和反序列化。它與Hadoop API中的MapFile 是互相兼容的。

MapFile即為排序後的SequeneceFile,它會額外生成一個索引文件提供按鍵的查找。文件不支持復寫操作,不能向已存在的SequenceFile(MapFile)追加存儲記錄,在執行文件寫操作的時候,該文件是不可讀取的。

Avro是一種用於支持數據密集型的二進制文件格式。它的文件格式更為緊湊,若要讀取大量數據時,Avro能夠提供更好的序列化和反序列化性能。並且Avro數據文件天生是帶Schema定義的,所以它不需要開發者在API 級別實現自己的Writable對象。最近多個Hadoop 子項目都支持Avro 數據格式,如Pig 、Hive、Flume、Sqoop和Hcatalog。

面向列:Parquet 、RCFile、ORCFile

RCFile是Hive推出的一種專門面向列的數據格式。 它遵循「先按列劃分,再垂直劃分」的設計理念。當查詢過程中,針對它並不關心的列時,它會在IO上跳過這些列。

ORCFile (Optimized Record Columnar File)提供了一種比RCFile更加高效的文件格式。其內部將數據劃分為默認大小為250M的Stripe。每個Stripe包括索引、數據和Footer。索引存儲每一列的最大最小值,以及列中每一行的位置。

Parquet 是一種支持嵌套結構的列式存儲格式。Parquet 的存儲模型主要由行組(Row Group)、列塊(Column Chuck)、頁(Page)組成。

1、行組,Row Group:Parquet 在水平方向上將數據劃分為行組,默認行組大小與 HDFS Block 塊大小對齊,Parquet 保證一個行組會被一個 Mapper 處理。

2、列塊,Column Chunk:行組中每一列保存在一個列塊中,一個列塊具有相同的數據類型,不同的列塊可以使用不同的壓縮。

3、頁,Page:Parquet 是頁存儲方式,每一個列塊包含多個頁,一個頁是最小的編碼的單位,同一列塊的不同頁可以使用不同的編碼方式。

一般原始表數據使用文本格式存儲,其他的都是列式存儲。

目前在Hadoop中常用的幾種壓縮格式:lzo,gzip,snappy,bzip2,主要特性對比如下:

其性能對比如下:

2.1 lzo

hadoop中最流行的壓縮格式,壓縮/解壓速度也比較快,合理的壓縮率,支持split。適用於較大文本的處理。

對於lzo壓縮,常用的有LzoCodec和lzopCodec,可以對sequenceFile和TextFile進行壓縮。對TextFile壓縮後,mapred對壓縮後的文件默認是不能夠進行split操作,需要對該lzo壓縮文件進行index操作,生成lzo.index文件,map操作才可以進行split。如果設置LzoCodec,那麼就生成.lzo後綴的文件,可以用LzoIndexer 進行支持split的index計算,如果設置LzopCodec,那麼生成.lzo_deflate後綴的文件,不支持建立index。

熱點內容
我的世界ec伺服器消失了 發布:2024-10-07 21:48:30 瀏覽:661
pythonziptodict 發布:2024-10-07 21:36:09 瀏覽:790
linux操作系統教程 發布:2024-10-07 21:16:54 瀏覽:280
摩托音響怎麼配置 發布:2024-10-07 21:12:37 瀏覽:348
本田思域哪個配置好 發布:2024-10-07 21:04:11 瀏覽:347
演算法期末試卷 發布:2024-10-07 20:51:04 瀏覽:808
編譯期錯誤提示 發布:2024-10-07 20:07:23 瀏覽:296
阿里雲伺服器打開慢 發布:2024-10-07 20:06:33 瀏覽:577
磁存儲行業的前景 發布:2024-10-07 20:01:29 瀏覽:549
android對象序列化 發布:2024-10-07 20:01:28 瀏覽:760