hdfs存儲文件格式
A. hdfs 列式存儲和行式存儲的區別
列式資料庫是將同一個數據列的各個值存放在一起。插入某個數據行時,該行的各個數據列的值也會存放到不同的地方。
列式存儲: 每一列單獨存放,數據即是索引。
只訪問涉及得列,如果我們想訪問單獨一列(比如NAME)會相當迅捷。
一行數據包含一個列或者多個列,每個列一單獨一個cell來存儲數據。而行式存儲,則是把一行數據作為一個整體來存儲。
在HANA的世界中,並不是只存在列式存儲,行式存儲也是存在的。
各自的優缺點:
B. hdfs的特點有哪些
hdfs的特點
一、hdfs的優點
1.支持海量數據的存儲:一般來說,HDFS存儲的文件可以支持TB和PB級別的數據。
2.檢測和快速應對硬體故障:在集群環境中,硬體故障是常見性問題。因為有上千台伺服器連在一起,故障率很高,因此故障檢測和自動恢復hdfs文件系統的一個設計目標。假設某一個datanode掛掉之後,因為數據是有備份的,還可以從其他節點里找到。namenode通過心跳機制來檢測datanode是否還存活。
3.流式數據訪問:(HDFS不能做到低延遲的數據訪問,但是HDFS的吞吐量大)=》Hadoop適用於處理離線數據,不適合處理實時數據。HDFS的數據處理規模比較大,應用一次需要大量的數據,同時這些應用一般都是批量處理,而不是用戶互動式處理。應用程序能以流的形式訪問資料庫。主要的是數據的吞吐量,而不是訪問速度。訪問速度最終是要受制於網路和磁碟的速度,機器節點再多,也不能突破物理的局限。
4.簡化的一致性模型:對於外部使用用戶,不需要了解hadoop底層細節,比如文件的切塊,文件的存儲,節點的管理。一個文件存儲在HDFS上後,適合一次寫入,多次讀取的場景。因為存儲在HDFS上的文件都是超大文件,當上傳完這個文件到hadoop集群後,會進行文件切塊,分發,復制等操作。如果文件被修改,會導致重新觸發這個過程,而這個過程耗時是最長的。所以在hadoop里,2.0版本允許數據的追加,單不允許數據的修改。
5.高容錯性:數據自動保存多個副本,副本丟失後自動恢復。可構建在廉價的機器上,實現線性擴展。當集群增加新節點之後,namenode也可以感知,將數據分發和備份到相應的節點上。
6.商用硬體:Hadoop並不需要運行在昂貴且高可靠的硬體上。它是設計運行在商用硬體(在各種零售店都能買到的普通硬體)的集群上的,因此至少對於龐大的集群來說,節點故障的幾率還是非常高的。HDFS遇到上述故障時,被設計成能夠繼續運行且不讓用戶察覺到明顯的中斷。
二、HDFS缺點(局限性)
1、不能做到低延遲數據訪問:由於hadoop針對高數據吞吐量做了優化,犧牲了獲取數據的延遲,所以對於低延遲數據訪問,不適合hadoop。對於低延遲的訪問需求,HBase是更好的選擇。
2、不適合大量的小文件存儲 :由於namenode將文件系統的元數據存儲在內存中,因此該文件系統所能存儲的文件總數受限於namenode的內存容量。根據經驗,每個文件、目錄和數據塊的存儲信息大約佔150位元組。因此,如果有一百萬個小文件,每個小文件都會佔一個數據塊,那至少需要300MB內存。如果是上億級別的,就會超出當前硬體的能力。
3、修改文件:對於上傳到HDFS上的文件,不支持修改文件。Hadoop2.0雖然支持了文件的追加功能,但是還是不建議對HDFS上的文件進行修改。因為效率低下。HDFS適合一次寫入,然後多次讀取的場景。
4、不支持用戶的並行寫:同一時間內,只能有一個用戶執行寫操作。
C. hdfs文件系統可以代替mysql嗎
不能。
不是一個概念。mysql是傳統的關系型資料庫。hdfs是nosql hadoop的存儲方式。hdfs是分布式的自帶高可用存儲,文件格式跟mysql的存儲引擎不一樣。大數據離線存儲,當然是hdfs更合適。通過Map/Rece進行批處理遞送到Apache Hadoop仍然是中樞環節。但隨著要從「超思維速度「分析方面獲取競爭優勢的壓力遞增,因此Hadoop(分布式文件系統)自身經歷重大的發展。
科技的發展允許實時查詢,如Apache Drill, Cloudera Impala和Stinger Initiative正脫穎而出,新一代的資源管理Apache YARN 支持這些。為了支持這種日漸強調實時性操作,我們正發布一個新MySQL Applier for Hadoop(用於Hadoop的MySQL Applier)組件。它能夠把MySQL中變化的事務復制到Hadoop / Hive / HDFS。Applier 組件補充現有基於批處理Apache Sqoop的連接性。
D. hdfs和mysql有什麼區別大數據離線數據存儲在mysql還是hdfs比較好
這區別可大了,不是一個概念。mysql是傳統的關系型資料庫。hdfs是nosql hadoop的存儲方式。hdfs是分布式的自帶高可用存儲,文件格式跟mysql的存儲引擎不一樣。大數據離線存儲,當然是hdfs更合適
E. Hbase與HDFS是什麼關系
HDFS是GFS的一種實現,他的完整名字是分布式文件系統,類似於FAT32,NTFS,是一種文件格式,是底層的,Hadoop HDFS為HBase提供了高可靠性的底層存儲支持。
HBase是Google Bigtable的開源實現,類似Google Bigtable利用GFS作為其文件存儲系統,HBase利用Hadoop HDFS作為其文件存儲系統。
(5)hdfs存儲文件格式擴展閱讀:
Hadoop 中各模塊的作用:
1、Hadoop HDFS為HBase提供了高可靠性的底層存儲支持。
2、Hadoop MapRece為HBase提供了高性能的計算能力。
3、Zookeeper為HBase提供了穩定服務和failover機制。
4、Pig和Hive還為HBase提供了高層語言支持,使得在HBase上進行數據統計處理變得非常簡單。
5、Sqoop則為HBase提供了方便的RDBMS(關系型資料庫)數據導入功能,使得傳統資料庫數據向HBase中遷移變得非常方便。
F. hdfs適合存儲多大的單個文件
首先hdfs是建立在多個機器文件系統上的一個邏輯上的文件系統。它的底層數據以數據塊方式存儲,塊大小可進行調整。
假如你設置一個數據塊大小為256M,上傳一個1G的文件,它底層會將這個文件分成4塊存儲,每個塊256M。你在hdfs上看到的是一個完整的文件,隨時可對這個文件進行操作,無需關注它的存儲。就像你在操作系統上操作文件一樣,無需關注它存在那個磁碟哪個扇區
G. Hbase與HDFS是個什麼關系
他們的關系是:hbase是一個內存資料庫,而hdfs是一個存儲空間;是物品和房子的關系。
hdfs只是一個存儲空間,他的完整名字是分布式文件系統。從名字可知他的作用了。
hbase是一個內存資料庫,簡單點說hbase把表啊什麼的存在hdfs上。
H. 用sqoop將mysql得表導入HDFS里,那麼問題來了,這個表將會以什麼格式存儲在HDFS中呢,是txt還是別的
sqoop是一個能把數據在關系型資料庫和HDFS之間互相傳輸的工具。在這里,我寫一下用java程序來實現sqoop把數據從HDFS寫入到MYSQL。在接觸sqoop之前,我自己寫了一個傳輸類來實現數據從HDFS到MYSQL。這里簡單說一下時間的思想:1、在MYSQL中創建一個參數表A,用來記錄要傳輸的表的表名B和欄位。2、HDFS上的數據的格式和MYSQL中參數表A中B表的欄位的數量一樣。3、從MYSQL的參數表A中,讀取要傳輸的表B。把這些欄位拼湊成一個insert語句,例如,拼湊為insertintob(column1,column2..)values(value1,value2)4、從HDFS相應的目錄逐行讀取數據,通過JDBC,把數據批量導入到MYSQL的B表中。我現在用sqoop來代替原來傳輸的那個功能。先做一下准備工作:1、hadoop的每個節點下lib文件夾中要有mysql的jar包和sqoop的jar包。2、在HDFS的某個目錄上的數據格式和MYSQL相應的表中的欄位數量一致。實現類如下:packagesqoop;importjava.util.ArrayList;importjava.util.List;importorg.apache.hadoop.conf.Configuration;importorg.apache.sqoop.Sqoop;importorg.apache.sqoop.tool.ExportTool;/***用SQOOP來把數據從HDFS導入到MYSQL。**/publicclassTest{publicstaticvoidmain(String[]args){ListgeneratedJarsList=newArrayList();Configurationconf=newConfiguration();conf.set("fs.default.name","hdfs://master:9000");conf.set("hadoop.job.ugi","hadooper,hadoopgroup");conf.set("mapred.job.tracker","master:9001");ArrayListlist=newArrayList();//定義一個listlist.add("--table");list.add("a_baat_client");//mysql中的表。將來數據要導入到這個表中。list.add("--export-dir");list.add("/tmp/datathree/");//hdfs上的目錄。這個目錄下的數據要導入到a_baat_client這個表中。list.add("--connect");list.add("jdbc:mysql://192.168.1.10:3306/report");//mysql的鏈接list.add("--username");list.add("root");//mysql的用戶名list.add("--password");list.add("root");//mysql的密碼list.add("--lines-terminated-by");list.add("\\n");//數據的換行符號list.add("-m");list.add("1");//定義maprece的數量。String[]arg=newString[1];ExportToolexporter=newExportTool();Sqoopsqoop=newSqoop(exporter);sqoop.setConf(conf);arg=list.toArray(newString[0]);intresult=Sqoop.runSqoop(sqoop,arg);System.out.println("res:"+result);//列印執行結果。}}這個導出類執行過程中,可以在瀏覽器中看一下http://master:50030頁面。會發現導出數據也是一個把任務轉換為maprece執行的過程。當然,上面的java代碼,也可以用命令行來實現。命令如下:bin/sqoopexport--connectjdbc:mysql://192.168.1.10:3306/report\--tablea_baat_client--usernameroot--passwordroot\--export-dir/tmp/datathree/-m1關於sqoop把數據從HDFS導入到MYSQL就說這么多。把數據從HIVE導入到MYSQL,其實可以理解為把HIVE表所對應的HDFS路徑的數據導入到MYSQL,這里就不多說了。
I. hdfs為什麼能存儲不同類型數據為什麼能存儲pb級的數據
「TB是一個計算機存儲容量的單位,它等於2的40次方,或者接近一萬億個位元組(即,一千千兆位元組)。」
一提到數據量級,人們通常會聯想到美國國會圖書館(見圖)。德勤、麥肯錫、IBM、Gartner和移動廣告公司Adfonic的數據專家向TechTarget記者介紹了PB級數據究竟有多大。
麥肯錫首席分析師Michael Chui指出,美國國會圖書館「在2011年4月前已經收集了235TB的數據,而一個PB相當於它的4倍。」
TechTarget自己的網路網站Whatis有關於PB大小的定義:「PB是數據存儲容量的單位,它等於2的50次方個位元組,或者在數值上大約等於1000個TB。」
未來學家Raymond Kurzweil他的論文中對PB的定義進行延伸:人類功能記憶的容量預計在1.25個TB。這意味著,800個人類記憶才相當於1個PB。
如果這樣還不夠清楚,那麼Adfonic的CTO Wes Biggs給出了下面更直接的計算:
假設手機播放MP3的編碼速度為平均每分鍾1MB,而1首歌曲的平均時長為4分鍾,那麼1PB歌曲可以連續播放2000年。
如果智能手機相機拍攝相片的平均大小為3MB,列印照片的平均大小為8.5英寸,那麼總共1PB的照片的並排排列長度就達到48000英里——大約可以環繞地球2周。
1PB足夠存儲整個美國人口的DNA,而且還能再克隆2倍。
DVD、戰列艦和六國賽
從比特(bit)和位元組(byte)開始,德勤的分析師還將他們的思考向以下方面進一步延伸。(1個比特是1個二進制位,可能是0或1;1個位元組長8個二進制):
如果以每秒1個位的速度數一下1PB所包含的位數,那麼您需要2.85億年才能數完。
如果每秒數1個位元組,那麼您需要數357萬年。
保存1PB數據需要用掉22.3萬張DVD。
保存1PB數據,需要用掉7.46億張3.5英寸軟盤;這7.46億軟盤重13422噸。這個重量僅僅比2艘Type 45驅逐艦輕一些。
人類身體細胞數據各不相同,但是數量最多的接近100萬億個,如果用1個位來表示1個細胞,那麼1PB足夠記錄90個人的身體細胞,相當於橄欖球六國賽的全部球員。
谷歌、社交媒體和宇宙大爆炸
谷歌在2004年率先進軍數字地圖領域,並在2005年發布了谷歌地圖和谷歌地球。現在,谷歌為用戶提供了超過20PB(215億MB)的地圖影像——包括衛星圖片、航拍照片和360度街景圖片。
即使在2008年,谷歌每天處理的數據已經達到20 PB,一年就是7300 PB。
從那時起,社交媒體網站就開始生成PB級數據,它們逐漸成為所謂的「大數據」。
根據2012年2月1日Facebook向美國證券交易委員會提交的IPO文檔記錄,Facebook在1年前已經存儲了100 PB數據。
在Twitter網站上,每分鍾就有34000條微博出現。IBM非常關注於一個天文項目:「由於20個國家共同出資總計15億歐元建設的平方公里陣列(Square Kilometer Array, SKA)是一個無線電天文望遠鏡,它可以觀測宇宙大爆炸的衰弱信號。」
SKA(計劃在2024年完成)估計整個宇宙每天將生成1376 PB數據,相當於每天傳輸的全球互聯網流量的兩倍。
只能盡量減少,而不能消除,常用減少誤差的