Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
版本說明:
通過 HDP 3.0.1 安裝的 HBase 2.0.0
HBase 本身提供了很多種數(shù)據(jù)導(dǎo)入的方式,目前常用的有三種常用方式:
前兩種方式:需要頻繁的與數(shù)據(jù)所存儲的 RegionServer 通信,一次性導(dǎo)入大量數(shù)據(jù)時,可能占用大量 Regionserver 資源,影響存儲在該 Regionserver 上其他表的查詢。
第三種方式:了解過 HBase 底層原理的應(yīng)該都知道,HBase 在 HDFS 中是以 HFile 文件結(jié)構(gòu)存儲的,一個比較高效便捷的方法就是先生成 HFile,再將生成的 HFile 加載到正在運行的 HBase 中。即使用 HBase 提供的 HFileOutputFormat2 類或者 importtsv 工具來完成上述操作。
經(jīng)過對比得知:如果數(shù)據(jù)量很大的情況下,使用第三種方式(Bulk Load)更好。占用更少的 CPU 和網(wǎng)絡(luò)資源就實現(xiàn)了大數(shù)據(jù)量的導(dǎo)入。本篇文章也將主要介紹 Bulk Load 方式。
Bulk Load 方式之所以高效,是因為繞過了正常寫數(shù)據(jù)的路徑(WAL、MemStore、flush)。總的來說,Bulk Load 方式使用 MapReduce 作業(yè)以 HBase 的內(nèi)部數(shù)據(jù)格式輸出表數(shù)據(jù),然后直接將生成的 HFiles 加載到正在運行的 HBase 中。與僅使用 HBase API 相比,使用 Bulk Load 方式不占用 Region 資源,不會產(chǎn)生巨量的寫入 I/O,將使用更少的 CPU 和網(wǎng)絡(luò)資源。
HBase Bulk Load 過程包括兩個主要步驟:
流程如下圖所示:
3.1 將準(zhǔn)備的數(shù)據(jù)生成HFile
將數(shù)據(jù)生成 HFile,有兩種方式,分別是:
本篇文章主要還是講解下 importtsv 工具的使用,編寫 MapReduce 程序在本篇不擴(kuò)展,后續(xù)文章會有補(bǔ)充。
importtsv 是一個實用工具,它將 TSV 格式的數(shù)據(jù)加載到 HBase 中。它有兩種用法,分別為:
hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.columns=a,b,c <tablename> <hdfs-inputdir>
hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.columns=a,b,c -Dimporttsv.bulk.output=hdfs://storefile-outputdir <tablename> <hdfs-data-inputdir>
注意:使用 importtsv -Dimporttsv.bulk.output 選項時,如果目標(biāo)表尚不存在,則將使用默認(rèn)列族描述符創(chuàng)建目標(biāo)表。如果準(zhǔn)備了大量數(shù)據(jù)要進(jìn)行Bulk Load,請確保對目標(biāo) HBase 表進(jìn)行適當(dāng)?shù)念A(yù)分區(qū),也就是預(yù)先創(chuàng)建多個 Region ,避免熱點與數(shù)據(jù)傾斜問題。
importtsv 可以使用 -D 指定的其他選項,以下列舉了11條:
盡管 importtsv 工具在許多情況下很有用,但高級用戶可能希望以編程方式生成數(shù)據(jù),或使用其他格式導(dǎo)入數(shù)據(jù)。如果有這樣的需求,請深入了解 ImportTsv.java 和 HFileOutputFormat 的 JavaDoc ,修改源碼進(jìn)行實現(xiàn)。
3.2 完成數(shù)據(jù)加載,將HFile加載到HBase中
completebulkload 工具用于將數(shù)據(jù)導(dǎo)入正在運行的 HBase 中。此命令行工具遍歷準(zhǔn)備好的數(shù)據(jù)文件(HFile),確定每個 HFile 所屬的 Region,然后聯(lián)系相應(yīng)的 RegionServer 將 HFile 移入其存儲目錄并將數(shù)據(jù)供客戶端使用。
如果在 Bulk Load 準(zhǔn)備過程中或在準(zhǔn)備和完成步驟之間 Region 邊界已更改,則 completebulkload 工具會自動將 HFile 拆分為與新邊界對應(yīng)的部分。此過程效率不高,因此用戶應(yīng)盡量減少 準(zhǔn)備 HFile 與 將 HFile 加載到 HBase 中 這兩步驟之間的時間延遲,尤其是在其他客戶端通過其他方式同時加載數(shù)據(jù)時也要注意。
將 HFile 加載到 HBase 中有兩種方式:
hbase org.apache.hadoop.hbase.tool.LoadIncrementalHFiles <hdfs://storefileoutput> <tablename>
export HBASE_HOME=/usr/hdp/{hdp-version}/hbase HADOOP_CLASSPATH=`${HBASE_HOME}/bin/hbase classpath` ${HADOOP_HOME}/bin/hadoop jar ${HBASE_HOME}/lib/hbase-mapreduce-{version}.jar completebulkload <hdfs://storefileoutput> <tablename>
說一下我的運行環(huán)境:CentOS-7,1個 HBase Master,3個 RegionServer,三臺機(jī)器均是 8G 內(nèi)存。
4.1 創(chuàng)建表的同時創(chuàng)建10個分區(qū)
create 'default:people', {NAME=>'basic_info'}, {NAME=>'other_info'}, SPLITS=>['10|','20|','30|','40|','50|','60|','70|','80|','90|']
創(chuàng)建的 people 表如下所示:
4.2 準(zhǔn)備數(shù)據(jù)源并上傳到HDFS
用 Python 生成了10萬條測試數(shù)據(jù)并存到了 hbase_data.txt 中,一共7.32M,現(xiàn)在將該文件上傳到 HDFS 中:
sudo -u hdfs hdfs dfs -put /tmp/hbase_data.txt /tmp
測試數(shù)據(jù)是我用python寫的,有詳細(xì)的說明和源碼,詳情點擊:Python生成HBase測試數(shù)據(jù)說明 。
4.3 通過importtsv工具生成HFile文件
使用 importtsv 工具生成 HFile 文件,執(zhí)行如下命令:
sudo -u hdfs hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.separator=',' -Dimporttsv.columns='HBASE_ROW_KEY,basic_info:name,basic_info:age,basic_info:sex,basic_info:edu,other_info:telPhone,other_info:email,other_info:country' -Dimporttsv.bulk.output=/tmp/people/output people /tmp/hbase_data.txt
請確保執(zhí)行該命令的用戶有相應(yīng)的權(quán)限。后臺會觸發(fā)一個 MapReduce 任務(wù),由于表中創(chuàng)建了 10 個 Region,所以觸發(fā)的任務(wù)內(nèi)有 1 個 map,10 個 reduce,該任務(wù)一共執(zhí)行了2分45秒。
4.4 將HFile數(shù)據(jù)加載到HBase中
兩種方式:
sudo -u hdfs hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles /tmp/people/output people
執(zhí)行上述語句總時長大約26秒。
export HBASE_HOME=/usr/hdp/3.0.1.0-187/hbase sudo -u hdfs HADOOP_CLASSPATH=`${HBASE_HOME}/bin/hbase classpath` ${HADOOP_HOME}/bin/hadoop jar ${HBASE_HOME}/lib/hbase-mapreduce-2.0.0.3.0.1.0-187.jar completebulkload /tmp/people/output people
小結(jié):上述兩種方式均可以實現(xiàn)將 HFile 數(shù)據(jù)導(dǎo)入到 HBase 中,其原理就是將 HFile 移動到 HBase 表的對應(yīng)目錄下存儲。
在 hbase shell 里執(zhí)行 scan ‘people’ ,將所有數(shù)據(jù)讀取一遍,我們再通過 HBase Web UI ,查看 people 表的各 region 的詳細(xì)情況。如下圖所示:
由表分析可知,10萬條 數(shù)據(jù) 較均勻地 分配到了 10 個 Region 中。自此,數(shù)據(jù)批量導(dǎo)入到 HBase 中完畢!
參考的 HBase 官網(wǎng):
在使用 importtsv 工具時,一定要注意參數(shù) -Dimporttsv.bulk.output 的配置。通常來說使用 Bulk Load Data 的方式對 RegionServer 來說更加友好一些,這種方式加載數(shù)據(jù)幾乎不占用 RegionServer 的計算資源,因為只是在 HDFS上 移動了 HFile 文件,然后通知 HMaster 將該 RegionServer 的一個或多個 Region 上線。
另外在進(jìn)行 Bulk Load 時,也需要確保執(zhí)行用戶在HDFS上有相應(yīng)的權(quán)限。
我將 HBase 數(shù)據(jù)導(dǎo)入常用的三種方式進(jìn)行了總結(jié),其中著重說明了一下 Bulk Load 方式,如下圖所示:
--END--
碼字不易,如果您覺得文章寫得不錯,請關(guān)注作者~ 您的關(guān)注是我寫作的最大動力
友情提示:原文排版精美,可點擊分享鏈接查看。
碼字不易,如果感覺本文對您有幫助,請點贊或訂閱支持一下,您的支持是我堅持寫作最大的動力,謝謝!
indle 憑著電子墨水屏的先天優(yōu)勢,在一眾電子設(shè)備中擁有更舒適的閱讀體驗,但僅僅依靠設(shè)備內(nèi)置的 Amazon Kindle 電子書書店,在書籍資源方面似乎顯得單薄。
秉承無版權(quán)糾紛的原則下,我搜集了一些電子書資源站點,整理它們各自的電子書資源特點,以及電子書格式轉(zhuǎn)換和書本推送至 Kindle 設(shè)備的操作技巧,希望能夠豐富大家獲取電子書資源的途徑,真正做到為電子書書架「添磚加瓦」。
書格 是一個自由開放的數(shù)字古籍圖書館,專注于不同類型古書籍的保護(hù)與文化藝術(shù)作品數(shù)字化傳播,網(wǎng)站創(chuàng)建于 2013 年,最早起源是豆瓣用戶 未曾 在 2012 年建立的 PDF 小站。網(wǎng)站收錄資源的首要準(zhǔn)則是限定為公共版權(quán)領(lǐng)域的書籍,分享的書籍資源來源于世界各個圖書館或機(jī)構(gòu)的公開內(nèi)容。由于書格分享的書籍大多圖文較多,所以暫時只發(fā)布 PDF 格式的文件。
書格提倡開放式共享資源,無須用戶注冊即可瀏覽下載網(wǎng)站的任何資源,用戶可以在 站內(nèi)搜索 查看已發(fā)布資源列表,或者直接進(jìn)入書格的 網(wǎng)盤目錄 瀏覽下載。根據(jù)書格公布的數(shù)據(jù)顯示,截止今年 3 月底,網(wǎng)站已經(jīng)發(fā)布超過 1600 套書籍資源,所有資源大小約 616 GB。在書格的資源分類中,我們可以按照學(xué)術(shù)分類(史地、社會科學(xué)、藝術(shù)等)和興趣分類(永樂大典系列、練字參考、要看圖多的等)找到不同類型的書籍。
圖靈社區(qū) 主要專注于科技書籍的出版,包括計算機(jī)、數(shù)學(xué)統(tǒng)計、科普等領(lǐng)域,提供免費和付費的電子書。用戶可以使用網(wǎng)銀或者支付寶的購買方式,大部分電子書同時提供了三種閱讀方式:在線閱讀、MOBI 推送、PDF 下載,部分書籍只提供其中部分格式。
圖靈社區(qū)的圖書分類除了按照常規(guī)分類(計算機(jī)、科普、設(shè)計、高等數(shù)學(xué)等)外,還可以按不同的 Tag 標(biāo)簽查找感興趣的書籍。如果你有更準(zhǔn)確的書籍信息(ISBN 碼、作譯者、出版日期),通過圖靈社區(qū)的 高級搜索 功能精確地找到對應(yīng)資源。
在用戶的 個人設(shè)置 頁面中,圖靈社區(qū)提供了推送郵箱的功能,填寫好 Kindle 個人郵箱,如果遇到推送失敗的話,可以嘗試將 no-reply@ituring.com.cn 加入 Kindle 已認(rèn)可的發(fā)件人電子郵箱列表中。
Project Gutenberg 是國外最知名的電子書分享網(wǎng)站,最初在 1971 年 7 月由 Michael Hart 發(fā)起,主要提供大量版權(quán)過期后進(jìn)入公有領(lǐng)域的書籍,目前藏書量超過了 5 萬多本。你可以從網(wǎng)站提供的 TOP 100 下載排行榜 獲取最受用戶歡迎的電子書。
古登堡計劃也收錄了中文經(jīng)典書籍,以下載四大名著之一三國演義為例子,在下載頁面中,用戶可以將電子書轉(zhuǎn)存至 Dropbox、Google Drive、OneDrive 云盤,網(wǎng)站提供了 HTML、ePub、Kindle(mobi、azw 格式) 和富文本多種電子書格式。
Wikibooks 維基教科書 項目隸屬于 維基媒體基金會 旗下,網(wǎng)站主要收集教科書或者用戶自己編輯的書籍,提倡分析人人可編輯的自由教學(xué)讀本,目前已經(jīng)收錄超過 3000 本共 80000 多頁的電子書。
維基教科書
在維基教科書的 中文索引頁面 中,我們可以找到相當(dāng)豐富的教學(xué)類電子書資源,涵蓋了自然科學(xué)、數(shù)學(xué)、社會科學(xué)、語言、人文科學(xué)、工程學(xué)、藝術(shù)、計算機(jī)科學(xué)與技術(shù)以及部分中小學(xué)、大學(xué)課本。維基教科書為每一個網(wǎng)頁頁面提供了 PDF 文件下載的選項,稍顯遺憾的是相較于英文目前中文資源數(shù)量還比較有限。
維基媒體基金會的類似項目還有 維基文庫,目前已經(jīng)收錄了超過 29 萬篇文檔,主要領(lǐng)域包括了已出版的文獻(xiàn)、譯文、歷史檔案、文獻(xiàn)作者生平等,同樣提供了 PDF 格式的電子文件。
Planet eBook 被視為古典文學(xué)電子書愛好者的樂園,所收錄的小說和書籍均可免費下載和共享,提供的電子書格式包括 ePub、PDF、MOBI,每本收錄的書籍都提供了精致的介紹頁面,電子書的文字排版和圖文質(zhì)量都有不錯的水準(zhǔn)。如果你是外文小說的閱讀愛好者,Planet eBook 肯定是一個不容錯過的電子書平臺。
Github 上總能找到一些相當(dāng)優(yōu)秀的資源,其中有朋友 分享 了一份免費的編程中文書籍索引排行榜,榜單中按照編程知識領(lǐng)域,推薦不同的教程和電子書資源,包含了開發(fā)者網(wǎng)站、Gitbook 電子書資源和部分視頻教學(xué)資源。
Gitbook 是一個由用戶自主制作和分享電子書的平臺,從多人協(xié)作、Markdown 寫作、評論互動等多個環(huán)節(jié)上為電子書出版和共享提供了一站式解決方案。Gitbook 制作好的電子書支持輸出 ePub, MOBI 和 PDF 格式,Explore 頁面 集中列出了已整理出版的電子書,用戶可以按語言分類和電子書主題查找電子書資源。
下載書籍后,下一步要做的就是把書傳送到 Kindle 里。Kindle 原生系統(tǒng)支持的格式包括:AZW、TXT、PDF、MOBI、PRC、HTML、DOC、DOCX 以及 JPG,但網(wǎng)上電子書資源大部分會是 ePub 和 PDF 格式,這時就需要文件格式轉(zhuǎn)換和 PDF 重排工具(PDF 在 Kindle 設(shè)備上的閱讀效果并不理想),我收集了以下幾款實用工具:
Calibre 是一款強(qiáng)大的本地電子書管理工具,支持 Windows、macOS 和 Linux 三大平臺,本身支持市面絕大部分的文件導(dǎo)入和轉(zhuǎn)換,選中需要轉(zhuǎn)換的書籍后,點擊選擇「轉(zhuǎn)換書籍」,在打開的轉(zhuǎn)換頁面中選擇右上角輸出格式,選擇電子書設(shè)備支持的輸出格式。另外用戶還能夠調(diào)整轉(zhuǎn)換電子書的更多細(xì)節(jié)選項,包括輸出界面、字體、內(nèi)容目錄等。
管理工具:Calibre 使用指南
K2pdfopt 是一款可以優(yōu)化 PDF 文件、提升在移動設(shè)備上閱讀體驗 PDF 文檔的開源軟件,支持 Windows、macOS 和 Linux 三大平臺,還提供了命令行版本,以 Windows 平臺的 GUI 版本為例,
AConvert 是一款電子書轉(zhuǎn)換在線工具,支持輸出 AZW3、EPUB、DOCX、HTML、MOBI、PDF、RTF 和 TXT 格式,選擇本地文件上傳或在線地址。在轉(zhuǎn)換結(jié)果的下載頁面中,用戶可以將轉(zhuǎn)換后的文檔保存至 Dropbox、Google Drive,或者通過掃描二維碼下載文檔。同類型的在線工具還有 ConvertIO、ToePub。
Dropbox + IFTTT 實現(xiàn)云盤電子書推送至 Kindle 設(shè)備。部分電子書平臺提供將電子書文件轉(zhuǎn)存至類似 Dropbox 云存儲空間里,這時候再利用 IFTTT 提供的任務(wù)規(guī)則可以實現(xiàn)將云盤電子書資源自動推送至 Kindle 設(shè)備上,簡單說一下操作步驟:
以上就是我個人搜集的優(yōu)秀電子書資源站點和書籍格式轉(zhuǎn)換和傳輸?shù)囊恍┘记桑绻懔私飧嗟碾娮訒W(wǎng)站,歡迎在評論中與大家分享。
.online-convert
online-convert是一個十分優(yōu)秀的在線格式轉(zhuǎn)換應(yīng)用,支持格式覆蓋文檔、圖片、音頻、視頻、電子書、Flash以及一些 不常見的格式。使用非常簡單,你只需根據(jù)在你想轉(zhuǎn)換成的格式的分類(如文檔的在document converter)的下拉條上選擇你需要的格式后按Go就可以到達(dá)上傳文件頁面,上傳后就會提示下載。測試了一些PDF轉(zhuǎn)換TXT,發(fā)現(xiàn)支持中文,并且 轉(zhuǎn)換十分準(zhǔn)確。
2.ConvertFiles
ConvertFiles是的一個免費的在線格式轉(zhuǎn)換工具。ConvertFiles的界面十分丑陋,但是功能十分強(qiáng)大,支持眾多格式,包括文檔、圖片、視頻。支持格式外鏈,視頻方面支持國內(nèi)的酷6和56視頻。使用起來十分簡單,可以選擇上傳文件(Choose a local file)或者外鏈文件(download it from),然后設(shè)置轉(zhuǎn)換后的文件格式(Output format)即可。設(shè)置完成之后你可以選擇在線等待轉(zhuǎn)換,轉(zhuǎn)換后會提示下載地址。當(dāng)然你也可以留下你的郵箱地址(Send a download link to my email (optional))。
地址:http://www.convertfiles.com/
3.docspal
docspal是一個強(qiáng)大的在線格式轉(zhuǎn)換網(wǎng)頁,支持文檔、音頻、視頻等。
功能 : 支持文本文檔的txt,html,pdf,doc等、音頻的mp3,ogg,wav,wma等、支持視頻的3gp,mpv,flv等、圖片的png,jpg,gif等以及其它格式.
4.Cometdocs
Cometdocs可是一個號稱萬能的在線文件轉(zhuǎn)換器!當(dāng)然了,聲稱"萬能"有些過。不過它的強(qiáng)大毋庸置疑。一共提供50余種文件格式的轉(zhuǎn)換,幾乎涵蓋所有最常使用的文件類型。只要你打開這個應(yīng)用的網(wǎng)址,立刻就可以進(jìn)行文件的轉(zhuǎn)換。盡管是英文版面,但是畫面十分簡潔,一目了然,它會一步一步帶你完成 文件的轉(zhuǎn)換,不用擔(dān)心語言上的問題。友好的界面加上強(qiáng)大的功能,Cometdocs真的值得我們豎起大拇指。雖然不用注冊就可以使用它,但是注冊的用戶還 可以對轉(zhuǎn)換的文件進(jìn)行管理,并且注冊是免費而簡單的。
5.Zamzar
Zamzar是一個功能十分強(qiáng)大的在線文件轉(zhuǎn)換工具。它可以轉(zhuǎn)換各種形式的文件:如文檔、圖片、音樂、電子書、壓縮文件和CAD文件等。只需要按照4個簡單的步驟就可以輕松完成轉(zhuǎn)換。結(jié)果以郵件方式返回給用戶,無論是成功還是失敗。
6.docdroids
docdroids是一個不錯的在線文檔轉(zhuǎn)換工具,支持PDF, DOCX, DOC, ODT, PAGES, RTF, OTT, XLS, XLSX, TXT, PPT, PPTX, ODP等文檔,并且支持在線閱覽文檔。文檔上傳后60天內(nèi)不閱覽的話將被刪除,這也就意味著最少能支持60天,可以共享鏈接給你的朋友閱覽。
地址:http://www.docdroid.net/
7.Pdfaid
Pdfaid是一個多功能的PDF在線轉(zhuǎn)換工具,支持PDF的分割、合并、從Office多種格式轉(zhuǎn)換。這個從圖中就可以看出來。
可以設(shè)置PDF的一些配置,如頁面大小、標(biāo)題作者等。
8.freepdfconvert
又一個多格式PDF互轉(zhuǎn)的的在線應(yīng)用,總共支持67種格式轉(zhuǎn)換成PDF文件。
支持PDF轉(zhuǎn)換成Word&Excel文檔。
9.media-io
media-io是一個在線音頻格式轉(zhuǎn)換工具。
功能 : 支持mp3、wav、ogg、wma格式互轉(zhuǎn)、支持轉(zhuǎn)換成不同的質(zhì)量以滿足不同的需求
10.benderconverter
benderconverter是一個優(yōu)秀的在線視頻轉(zhuǎn)換器,支持大量的主流視頻格式包括MP3, AVI, FLV Flash, iPod / iPhone,3gp,mpeg,wav。除了上傳視頻轉(zhuǎn)換外,還支持youtube的鏈接。
附:
online-convert、ConvertFiles、docspal、Cometdocs、Zamzar為全能轉(zhuǎn)換器(支持多類型多格式的互轉(zhuǎn))
docdroids、Pdfaid、freepdfconvert為文檔格式轉(zhuǎn)換器(其中后兩者專為PDF服務(wù))
media-io為音頻格式轉(zhuǎn)換器
benderconverter為視頻格式轉(zhuǎn)換器
*請認(rèn)真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。