hadoop壓縮演算法用哪種最好
Test Plan的配置元件中有一些和HTTP屬性相關的元件:HTTP Cache Manager、HTTP Authorization Manager、HTTP Cookie Manager、HTTP Header Manager、HTTP Request Defaults等,這些是什麼呢?
JMeter不是瀏覽器,因此其行為並不和瀏覽器完全一致。這些JMeter提供的HTTP屬性管理器用於盡可能模擬瀏覽器的行為,在HTTP協議層上定製發送給被測應用的HTTP請求。
Ⅱ 如何在Scala中讀取Hadoop集群上的gz壓縮文件
(1)一個從文件創建的Scala對象,或(2)一個並行切片(分布在各個節點之間),或(3)從其他RDD轉換得來,或(4)改變已有RDD的持久性,如請求將已有RDD緩存在內存中。Spark應用稱為driver,實現單個節點或一組節點上的操作。
Ⅲ 我在解壓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
然後指令就運行了。。
Ⅳ hadoop集群用不同的操作系統,使用snappy壓縮會慢嗎
Docker最核心的特性之一,就是能夠將任何應用包括Hadoop打包到Docker鏡像中。這篇教程介紹了利用Docker在單機上快速搭建多節點Hadoop集群的詳細步驟。作者在發現目前的HadooponDocker項目所存在的問題之後,開發了接近最小化的Hadoop鏡像,並且支持快速搭建任意節點數的Hadoop集群。GitHub:kiwanlau/hadoop-cluster-docker直接用機器搭建Hadoop集群是一個相當痛苦的過程,尤其對初學者來說。他們還沒開始跑wordcount,可能就被這個問題折騰的體無完膚了。而且也不是每個人都有好幾台機器對吧。你可以嘗試用多個虛擬機搭建,前提是你有個性能杠杠的機器。我的目標是將Hadoop集群運行在Docker容器中,使Hadoop開發者能夠快速便捷地在本機搭建多節點的Hadoop集群。其實這個想法已經有了不少實現,但是都不是很理想,他們或者鏡像太大,或者使用太慢,或者使用了第三方工具使得使用起來過於復雜。下表為一些已知的HadooponDocker項目以及其存在的問題。更快更方便地改變Hadoop集群節點數目另外,alvinhenrick/hadoop-mutinode項目增加節點時需要手動修改Hadoop配置文件然後重新構建hadoop-nn-dn鏡像,然後修改容器啟動腳本,才能實現增加節點的功能。而我通過shell腳本實現自動話,不到1分鍾可以重新構建hadoop-master鏡像,然後立即運行!本項目默認啟動3個節點的Hadoop集群,支持任意節點數的Hadoop集群。另外,啟動Hadoop,運行wordcount以及重新構建鏡像都採用了shell腳本實現自動化。這樣使得整個項目的使用以及開發都變得非常方便快捷。開發測試環境操作系統:ubuntu14.04和ubuntu12.04內核版本:3.13.0-32-genericDocker版本:1.5.0和1.6.2小夥伴們,硬碟不夠,內存不夠,尤其是內核版本過低會導致運行失敗。
Ⅳ 如何安裝hadoop本地壓縮庫
Hadoop安裝配置snappy壓縮
[一]、 實驗環境
CentOS 6.3 64位
Hadoop 2.6.0
JDK 1.7.0_75
[二]、 snappy編譯安裝
2.1、下載源碼
到官網 http://code.google.com/p/snappy/ 或者到 https://github.com/google/snappy
下載源碼,目前版本為 1.1.1。
2.2、編譯安裝
解壓 tar -zxvf snappy-1.1.1.tar.gz ,然後以 root 用戶 執行標準的三步進行編譯安裝:
/configure
make
make install
默認是安裝到 /usr/local/lib ,這時在此目錄下查看:
[hadoop@micmiu ~]$ ls -lh /usr/local/lib |grep snappy
-rw-r--r-- 1 root root 229K Mar 10 11:28 libsnappy.a
-rwxr-xr-x 1 root root 953 Mar 10 11:28 libsnappy.la
lrwxrwxrwx 1 root root 18 Mar 10 11:28 libsnappy.so ->
libsnappy.so.1.2.0
lrwxrwxrwx 1 root root 18 Mar 10 11:28 libsnappy.so.1 ->
libsnappy.so.1.2.0
-rwxr-xr-x 1 root root 145K Mar 10 11:28 libsnappy.so.1.2.0
安裝過程沒有錯誤同時能看到上面的動態庫,基本表示snappy 安裝編譯成功。
[三]、Hadoop snappy 安裝配置
3.1、hadoop 動態庫重新編譯支持snappy
hadoop動態庫編譯參考:Hadoop2.2.0源碼編譯 和 Hadoop2.x在Ubuntu系統中編譯源碼 ,只是把最後編譯的命令中增加
-Drequire.snappy :
1mvn package -Pdist,native -DskipTests -Dtar -Drequire.snappy
把重新編譯生成的hadoop動態庫替換原來的。
3.2、hadoop-snappy 下載
目前官網沒有軟體包提供,只能藉助 svn 下載源碼:
1svn checkout http://hadoop-snappy.googlecode.com/svn/trunk/
hadoop-snappy
3.3、hadoop-snappy 編譯
1mvn package [-Dsnappy.prefix=SNAPPY_INSTALLATION_DIR]
PS:如果上面 snappy安裝路徑是默認的話,即 /usr/local/lib,則此處
[-Dsnappy.prefix=SNAPPY_INSTALLATION_DIR] 可以省略,或者
-Dsnappy.prefix=/usr/local/lib
編譯成功後,把編譯後target下的 hadoop-snappy-0.0.1-SNAPSHOT.jar 復制到 $HADOOP_HOME/lib
,同時把編譯生成後的動態庫 到 $HADOOP_HOME/lib/native/ 目錄下:
1cp -r
$HADOOP-SNAPPY_CODE_HOME/target/hadoop-snappy-0.0.1-SNAPSHOT/lib/native/Linux-amd64-64
$HADOOP_HOME/lib/native/
3.4、編譯過程中常見錯誤處理
① 缺少一些第三方依賴
官方文檔中提到編譯前提需要:gcc c++, autoconf, automake, libtool, java 6, JAVA_HOME set,
Maven 3
②錯誤信息:
[exec] libtool: link: gcc -shared
src/org/apache/hadoop/io/compress/snappy/.libs/SnappyCompressor.o
src/org/apache/hadoop/io/compress/snappy/.libs/SnappyDecompressor.o
-L/usr/local/lib -ljvm -ldl -m64 -Wl,-soname -Wl,libhadoopsnappy.so.0 -o
.libs/libhadoopsnappy.so.0.0.1
[exec] /usr/bin/ld: cannot find -ljvm
[exec] collect2: ld returned 1 exit status
[exec] make: *** [libhadoopsnappy.la] Error 1
或者
[exec] /bin/sh ./libtool --tag=CC --mode=link gcc -g -Wall -fPIC -O2 -m64
-g -O2 -version-info 0:1:0 -L/usr/local/lib -o libhadoopsna/usr/bin/ld: cannot
find -ljvm
[exec] collect2: ld returned 1 exit status
[exec] make: *** [libhadoopsnappy.la] Error 1
[exec] ppy.la -rpath /usr/local/lib
src/org/apache/hadoop/io/compress/snappy/SnappyCompressor.lo
src/org/apache/hadoop/io/compress/snappy/SnappyDecompressor.lo -ljvm -ldl
[exec] libtool: link: gcc -shared
src/org/apache/hadoop/io/compress/snappy/.libs/SnappyCompressor.o
src/org/apache/hadoop/io/compress/snappy/.libs/SnappyDecompressor.o
-L/usr/local/lib -ljvm -ldl -m64 -Wl,-soname -Wl,libhadoopsnappy.so.0 -o
.libs/libhadoopsnappy.so.0.0.1
[ant] Exiting
/home/hadoop/codes/hadoop-snappy/maven/build-compilenative.xml.
這個錯誤是因為沒有把安裝jvm的libjvm.so 鏈接到
/usr/local/lib。如果你的系統時amd64,可以執行如下命令解決這個問題:
1ln -s /usr/java/jdk1.7.0_75/jre/lib/amd64/server/libjvm.so
/usr/local/lib/
[四]、hadoop配置修改
4.1、修改 $HADOOP_HOME/etc/hadoop/hadoop-env.sh,添加:
1export
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HADOOP_HOME/lib/native/Linux-amd64-64/
4.2、修改 $HADOOP_HOME/etc/hadoop/core-site.xml:
XHTML
io.compression.codecs
org.apache.hadoop.io.compress.GzipCodec,
org.apache.hadoop.io.compress.DefaultCodec,
org.apache.hadoop.io.compress.BZip2Codec,
org.apache.hadoop.io.compress.SnappyCodec
4.3、修改 $HADOOP_HOME/etc/hadoop/mapred-site.xml 中有關壓縮屬性,測試snappy:
XHTML
maprece.map.output.compress
true
maprece.map.output.compress.codec
org.apache.hadoop.io.compress.SnappyCodec[五]、測試驗證
全部配置好後(集群中所有的節點都需要動態庫和修改配置),重啟hadoop集群環境,運行自帶的測試實例
wordcount,如果maprece過程中沒有錯誤信息即表示snappy壓縮安裝方法配置成功。
當然hadoop也提供了本地庫的測試方法 hadoop checknative :
[hadoop@micmiu ~]$ hadoop checknative
15/03/17 22:57:59 INFO bzip2.Bzip2Factory: Successfully loaded &
initialized native-bzip2 library system-native
15/03/17 22:57:59 INFO zlib.ZlibFactory: Successfully loaded &
initialized native-zlib library
Native library checking:
hadoop: true
/usr/local/share/hadoop-2.6.0/lib/native/libhadoop.so.1.0.0
zlib: true /lib64/libz.so.1
snappy: true
/usr/local/share/hadoop/lib/native/Linux-amd64-64/libsnappy.so.1
lz4: true revision:99
bzip2: true /lib64/libbz2.so.1
openssl: true /usr/lib64/libcrypto.so
Ⅵ hadoop sequencefile 怎麼使用
1.SequenceFile特點:是 Hadoop 的一個重要數據文件類型,它提供key-value的存儲,但與傳統key-value存儲(比如hash表,btree)不同的是,它是appendonly的,於是你不能對已存在的key進行寫操作。
2.SequenceFile 有三種壓縮態:
1 Uncompressed – 未進行壓縮的狀
2.record compressed - 對每一條記錄的value值進行了壓縮(文件頭中包含上使用哪種壓縮演算法的信息)
3. block compressed – 當數據量達到一定大小後,將停止寫入進行整體壓縮,整體壓縮的方法是把所有的keylength,key,vlength,value 分別合在一起進行整體壓縮
3.結構組成:
3.1 header數據:保存文件的壓縮態標識;
3.2 Metadata數據:簡單的屬性/值對,標識文件的一些其他信息。Metadata 在文件創建時就寫好了,所以也是不能更改
3.3 追加的鍵值對數據
3.4 流存儲結構:流的存儲頭位元組格式:
Header: *位元組頭」SEQ」, 後跟一個位元組表示版本」SEQ4」,」SEQ6」.//這里有點忘了 不記得是怎麼處理的了,回頭補上做詳細解釋
*keyClass name
*valueClass name
*compression boolean型的存儲標示壓縮值是否轉變為keys/values值了
*blockcompression boolean型的存儲標示是否全壓縮的方式轉變為keys/values值了
*compressor 壓縮處理的類型,比如我用Gzip壓縮的Hadoop提供的是GzipCodec什麼的..
*元數據 這個大家可看可不看的
4.擴展實現:
4.1 MapFile 一個key-value 對應的查找數據結構,由數據文件/data 和索引文件 /index 組成,數據文件中包含所有需要存儲的key-value對,按key的順序排列。索引文件包含一部分key值,用以指向數據文件的關鍵位置
4.2 SetFile – 基於 MapFile 實現的,他只有key,value為不可變的數據。
4.3 ArrayFile – 也是基於 MapFile 實現,他就像我們使用的數組一樣,key值為序列化的數字。
4.4 BloomMapFile – 他在 MapFile 的基礎上增加了一個 /bloom 文件,包含的是二進制的過濾表,在每一次寫操作完成時,會更新這個過濾表。
5.使用如下:主要是Writer和Reader對象完成文件的添加和讀功能,應用demo參照下面鏈接,其中Map端以SequenceFileInputFormat格式接收,Map的key-value應為SequenceFile保持一致。
Ⅶ hadoop,storm和spark的區別,比較
一、hadoop、Storm該選哪一個?
為了區別hadoop和Storm,該部分將回答如下問題:
1.hadoop、Storm各是什麼運算
2.Storm為什麼被稱之為流式計算系統
3.hadoop適合什麼場景,什麼情況下使用hadoop
4.什麼是吞吐量
首先整體認識:Hadoop是級計算,進行計算時,數據在磁碟上,需要讀寫磁碟;Storm是內存級計算,數據直接通過網路導入內存。讀寫內存比讀寫磁碟速度快n個數量級。根據Harvard CS61課件,磁碟訪問延遲約為內存訪問延遲的75000倍。所以Storm更快。
注釋:
1. 延時 , 指數據從產生到運算產生結果的時間,「快」應該主要指這個。
2. 吞吐, 指系統單位時間處理的數據量。
storm的網路直傳、內存計算,其時延必然比hadoop的通過hdfs傳輸低得多;當計算模型比較適合流式時,storm的流式處理,省去了批處理的收集數據的時間;因為storm是服務型的作業,也省去了作業調度的時延。所以從時延上來看,storm要快於hadoop。
從原理角度來講:
Hadoop M/R基於HDFS,需要切分輸入數據、產生中間數據文件、排序、數據壓縮、多份復制等,效率較低。
Storm 基於ZeroMQ這個高性能的消息通訊庫,不持久化數據。
為什麼storm比hadoop快,下面舉一個應用場景
說一個典型的場景,幾千個日誌生產方產生日誌文件,需要進行一些ETL操作存入一個資料庫。
假設利用hadoop,則需要先存入hdfs,按每一分鍾切一個文件的粒度來算(這個粒度已經極端的細了,再小的話hdfs上會一堆小文件),hadoop開始計算時,1分鍾已經過去了,然後再開始調度任務又花了一分鍾,然後作業運行起來,假設機器特別多,幾鈔鍾就算完了,然後寫資料庫假設也花了很少的時間,這樣,從數據產生到最後可以使用已經過去了至少兩分多鍾。
而流式計算則是數據產生時,則有一個程序去一直監控日誌的產生,產生一行就通過一個傳輸系統發給流式計算系統,然後流式計算系統直接處理,處理完之後直接寫入,每條數據從產生到寫入資料庫,在資源充足時可以在毫秒級別完成。
同時說一下另外一個場景:
如果一個大文件的wordcount,把它放到storm上進行流式的處理,等所有已有數據處理完才讓storm輸出結果,這時候,你再把它和hadoop比較快慢,這時,其實比較的不是時延,而是比較的吞吐了。
--------------------------------------------------------------------------------------------------------------------------------
最主要的方面:Hadoop使用作為中間交換的介質,而storm的數據是一直在內存中流轉的。
兩者面向的領域也不完全相同,一個是批量處理,基於任務調度的;另外一個是實時處理,基於流。
以水為例,Hadoop可以看作是純凈水,一桶桶地搬;而Storm是用水管,預先接好(Topology),然後打開水龍頭,水就源源不斷地流出來了。
--------------------------------------------------------------------------------------------------------------------------------
Storm的主工程師Nathan Marz表示: Storm可以方便地在一個計算機集群中編寫與擴展復雜的實時計算,Storm之於實時處理,就好比Hadoop之於批處理。Storm保證每個消息都會得到處理,而且它很快——在一個小集群中,每秒可以處理數以百萬計的消息。更棒的是你可以使用任意編程語言來做開發。
Storm的主要特點如下:
1.簡單的模型。類似於MapRece降低了並行批處理復雜性,Storm降低了進行實時處理的復雜性。
2.可以使用各種。你可以在Storm之上使用各種編程語言。默認支持Clojure、Java、Ruby和Python。要增加對其他語言的支持,只需實現一個簡單的Storm通信協議即可。
3.容錯性。Storm會管理工作進程和節點的故障。
4.水平擴展。計算是在多個線程、進程和伺服器之間並行進行的。
5.可靠的消息處理。Storm保證每個消息至少能得到一次完整處理。任務失敗時,它會負責從消息源重試消息。
6.快速。系統的設計保證了消息能得到快速的處理,使用MQ作為其底層消息隊列。
7.本地模式。Storm有一個「本地模式」,可以在處理過程中完全模擬Storm集群。這讓你可以快速進行開發和單元測試。
--------------------------------------------------------------------------------------------------------------------------------
在消耗資源相同的情況下,一般來說storm的延時低於maprece。但是吞吐也低於maprece。storm是典型的流計算系統,maprece是典型的批處理系統。下面對流計算和批處理系統流程
這個個數據處理流程來說大致可以分三個階段:
1. 數據採集與准備
2. 數據計算(涉及計算中的中間存儲), 題主中的「那些方面決定」應該主要是指這個階段處理方式。
3. 數據結果展現(反饋)
1)階段,目前典型的處理處理策略:數據的產生系統一般出自頁面打點和解析DB的log,流計算將數據採集中消息隊列(比如kafaka,metaQ,timetunle)等。批處理系統一般將數據採集進分布式文件系統(比如HDFS),當然也有使用消息隊列的。我們暫且把消息隊列和文件系統稱為預處理存儲。二者在延時和吞吐上沒太大區別,接下來從這個預處理存儲進入到數據計算階段有很大的區別,流計算一般在實時的讀取消息隊列進入流計算系統(storm)的數據進行運算,批處理一系統一般會攢一大批後批量導入到計算系統(hadoop),這里就有了延時的區別。
2)數據計算階段,流計算系統(storm)的延時低主要有一下幾個方面(針對題主的問題)
A: storm 進程是常駐的,有數據就可以進行實時的處理
maprece 數據攢一批後由作業管理系統啟動任務,Jobtracker計算任務分配,tasktacker啟動相關的運算進程
B: stom每個計算單元之間數據之間通過網路(zeromq)直接傳輸。
maprece map任務運算的結果要寫入到HDFS,在於rece任務通過網路拖過去運算。相對來說多了讀寫,比較慢
C: 對於復雜運算
storm的運算模型直接支持DAG(有向無環圖)
maprece 需要肯多個MR過程組成,有些map操作沒有意義的
3)數據結果展現
流計算一般運算結果直接反饋到最終結果集中(展示頁面,,搜索引擎的索引)。而maprece一般需要整個運算結束後將結果批量導入到結果集中。
實際流計算和批處理系統沒有本質的區別,像storm的trident也有批概念,而maprece可以將每次運算的數據集縮小(比如幾分鍾啟動一次),facebook的puma就是基於hadoop做的流計算系統。
二、高性能並行計算引擎Storm和Spark比較
Spark基於這樣的理念,當數據龐大時,把計算過程傳遞給數據要比把數據傳遞給計算過程要更富效率。每個節點存儲(或緩存)它的數據集,然後任務被提交給節點。
所以這是把過程傳遞給數據。這和Hadoopmap/rece非常相似,除了積極使用內存來避免I/O操作,以使得迭代演算法(前一步計算輸出是下一步計算的輸入)性能更高。
Shark只是一個基於Spark的查詢引擎(支持ad-hoc臨時性的分析查詢)
而Storm的架構和Spark截然相反。Storm是一個分布式流計算引擎。每個節點實現一個基本的計算過程,而數據項在互相連接的網路節點中流進流出。和Spark相反,這個是把數據傳遞給過程。
兩個框架都用於處理大量數據的並行計算。
Storm在動態處理大量生成的「小數據塊」上要更好(比如在Twitter數據流上實時計算一些匯聚功能或分析)。
Spark工作於現有的數據全集(如Hadoop數據)已經被導入Spark集群,Spark基於in-memory管理可以進行快訊掃描,並最小化迭代演算法的全局I/O操作。
不過Spark流模塊(StreamingMole)倒是和Storm相類似(都是流計算引擎),盡管並非完全一樣。
Spark流模塊先匯聚批量數據然後進行數據塊分發(視作不可變數據進行處理),而Storm是只要接收到數據就實時處理並分發。
不確定哪種方式在數據吞吐量上要具優勢,不過Storm計算時間延遲要小。
總結下,Spark和Storm設計相反,而SparkSteaming才和Storm類似,前者有數據平滑窗口(slidingwindow),而後者需要自己去維護這個窗口。
Ⅷ hadoop用什麼壓縮工具最好
hadoop用什麼壓縮工具最好
填充可以按從下到上的順序疊加
選中圖層control+command+m創建蒙版
control+c會出現放大鏡,然後可以方便選擇顏色替換當前選擇對象的顏色
畫布的控制
使用空格進行抓手移動畫布
按command加滑鼠滾輪進行畫布放大和縮小
control+p能夠切換到像素模式查看,相當於輸出png後點開圖片查看的效果。
control+g開啟關閉網格
按住option鍵能夠看到各個對象之間的距離
command+1縮小至能看到所有對象,command+2放大到選中對象到屏幕適合的大小,command+0縮小至100%
Symbol共享元素,一次編輯所有地方都能夠生效。
Ⅸ 如何檢測hadoop中gz壓縮文件是否損壞
執行hive任務的時候,進入到8088的map詳細進度列表,即是RUNNING MAP attempts in job_1456816082333_1354,查看最後出錯的map是哪個節點或者在頁面直接點擊logs進入詳細log日誌查看,或者進入到節點的Hadoop的logs/userlogs目錄
根據jobid找到對應的目錄: application_1456816082333_1354,裡面有錯誤的文件id,然後刪除掉hdfs的對應的損壞文件。
Ⅹ 數據壓縮為什麼選擇hadoop
hadoop對於壓縮格式的是透明識別,我們的MapRece任務的執行是透明的,hadoop能夠自動為我們
將壓縮的文件解壓,而不用我們去關心。