原創(chuàng)|行業(yè)資訊|編輯:陳俊吉|2016-09-29 10:20:22.000|閱讀 856 次
概述:本文針對(duì) IBM 最新開(kāi)發(fā)的數(shù)據(jù)分析平臺(tái)進(jìn)行概要介紹并對(duì)其應(yīng)用進(jìn)行指導(dǎo)說(shuō)明。隨著信息技術(shù)應(yīng)用范圍的不斷擴(kuò)展,對(duì)數(shù)據(jù)進(jìn)行挖掘分析的需求日益增加,但是信息量的不斷增大及其應(yīng)用構(gòu)建的復(fù)雜性日益卻成為了傳統(tǒng)數(shù)據(jù)分析的一個(gè)瓶頸。IBM 構(gòu)建的數(shù)據(jù)分析平臺(tái)針對(duì)上述問(wèn)題,基于 Hadoop 技術(shù),對(duì)數(shù)據(jù)查詢語(yǔ)言,數(shù)據(jù)分析軟件,數(shù)據(jù)庫(kù),作業(yè)調(diào)度模塊進(jìn)行了有效整合,實(shí)現(xiàn)了對(duì)數(shù)據(jù)的有效、高效處理,保證了高度的擴(kuò)展性和兼容性。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
本文針對(duì) IBM 最新開(kāi)發(fā)的平臺(tái)進(jìn)行概要介紹并對(duì)其應(yīng)用進(jìn)行指導(dǎo)說(shuō)明。隨著信息技術(shù)應(yīng)用范圍的不斷擴(kuò)展,對(duì)數(shù)據(jù)進(jìn)行挖掘分析的需求日益增加,但是信息量的不斷增大及其應(yīng)用構(gòu)建的復(fù)雜性日益卻成為了傳統(tǒng)的一個(gè)瓶頸。IBM 構(gòu)建的數(shù)據(jù)分析平臺(tái)針對(duì)上述問(wèn)題,基于 Hadoop 技術(shù),對(duì)數(shù)據(jù)查詢語(yǔ)言,數(shù)據(jù)分析軟件,數(shù)據(jù)庫(kù),作業(yè)調(diào)度模塊進(jìn)行了有效整合,實(shí)現(xiàn)了對(duì)數(shù)據(jù)的有效、高效處理,保證了高度的擴(kuò)展性和兼容性。
在當(dāng)今信息爆炸的時(shí)代,企業(yè)需要對(duì)越來(lái)越多的數(shù)據(jù)進(jìn)行訪問(wèn)和處理。除了傳統(tǒng)的在線交易處理系統(tǒng)和管理信息系統(tǒng)外,半結(jié)構(gòu)化和無(wú)結(jié)構(gòu)化的數(shù)據(jù)呈現(xiàn)出了更快速的增長(zhǎng)趨勢(shì),例如企業(yè)內(nèi)部的 email 歸檔,call center 對(duì)話記錄,客戶反饋記錄,企業(yè)內(nèi)部網(wǎng)絡(luò)應(yīng)用,合作管理系統(tǒng)以及,企業(yè)的外部門戶網(wǎng)站點(diǎn)擊記錄,基于 Feed 的市場(chǎng)信息等等。
如何更加有效的低成本的處理這些大量的數(shù)據(jù)(數(shù)據(jù)量從幾個(gè) Tera 字節(jié)到 Peta 字節(jié))從而和商業(yè)智能相結(jié)合以挖掘出對(duì)企業(yè)有益的信息并幫助用戶作出更準(zhǔn)確的決策是一個(gè)急需解決的問(wèn)題。
目前傳統(tǒng)的平臺(tái)(ETI 引擎,數(shù)據(jù)倉(cāng)庫(kù)和集市等技術(shù))主要是針對(duì)結(jié)構(gòu)化的數(shù)據(jù)進(jìn)行在線數(shù)據(jù)分析應(yīng)用,這種數(shù)據(jù)處理模式面臨著對(duì)大量數(shù)據(jù)和半結(jié)構(gòu)化的數(shù)據(jù)處理能力不足和不能承受服務(wù)器擴(kuò)展的的復(fù)雜性的問(wèn)題,為此,Google 實(shí)現(xiàn)了一個(gè)能夠有效利用大量成本低廉的 PC 機(jī)和服務(wù)器的 Mapred 編程模型和框架并于 2004 年發(fā)表了相應(yīng)的論文,此框架提供自動(dòng)容錯(cuò)和恢復(fù)功能并且能夠保證整個(gè)系統(tǒng)的高度可擴(kuò)展性,而 Hadoop 作為 Mapred 的 Open source 的實(shí)現(xiàn)已經(jīng)被越來(lái)越多的企業(yè)特別是 Internet 公司采用作為基本的分析和查詢的基礎(chǔ)架構(gòu),比如百度,F(xiàn)acebook, Yahoo !等。
IBM 對(duì)于 Hadoop 的研究開(kāi)始于 2-3 年前,截止到目前,研究成果涉及到作業(yè)調(diào)度,查詢語(yǔ)言等多個(gè)方面。在這些研究的基礎(chǔ)上,IBM 啟動(dòng)了 BigInsights 項(xiàng)目并于 2011 年 5 月發(fā)布了 Basic Edition 和 Enterprise Edition 并且還將集成更多 IBM 的產(chǎn)品與組件,其系統(tǒng)結(jié)構(gòu)圖如圖 1 所示。
從上面的 BigInsights 產(chǎn)品戰(zhàn)略示意圖中可以看到,平臺(tái)的最低層依賴于由多臺(tái)普通 PC 或者服務(wù)器組成的集群 , 也就是說(shuō)用戶并不需要通過(guò)不斷的購(gòu)買或者升級(jí)目前的大型服務(wù)器的性能來(lái)實(shí)現(xiàn)更大數(shù)據(jù)量的處理,而只需要利用一些閑置的普通機(jī)器對(duì)目前的集群進(jìn)行擴(kuò)展 (scale-up 方式 )。
另外,此平臺(tái)除了支持 Hadoop 應(yīng)用程序主要基于的 HDFS 存儲(chǔ)系統(tǒng)外,還將對(duì) IBM 最新推出的 GPFS SNC (Shared Nothing Cluster) 平臺(tái)進(jìn)行支持以更好的利用其強(qiáng)大的災(zāi)難恢復(fù),高可靠性,高擴(kuò)展性的優(yōu)勢(shì),其實(shí)現(xiàn)依賴于 Hadoop 本身提供的抽象 API 接口。為了對(duì)這些存儲(chǔ)系統(tǒng)的數(shù)據(jù)能夠進(jìn)行有效地分析,BigInsights 平臺(tái)集成了 IBM 最新推出的大數(shù)據(jù)量處理分析系統(tǒng) BigSheets, 用來(lái)方便的抓取轉(zhuǎn)瞬即逝的信息并進(jìn)行保存分析,除此之外,為了使用戶自己能夠方便的定制自己的查詢功能,BigInsights 還提供了能夠直接對(duì)存儲(chǔ)系統(tǒng)的數(shù)據(jù)進(jìn)行讀取及其他操作的查詢語(yǔ)言 Jaql, 這些也是 Biginsight 發(fā)布的重點(diǎn)特性,也是本文進(jìn)行介紹的重點(diǎn)。在 BigSheets,Jaql 和底層的存儲(chǔ)系統(tǒng)之間,BigInsights 使用了任務(wù)調(diào)度器來(lái)調(diào)度多個(gè)作業(yè)的同時(shí)運(yùn)行。
此外,從上圖中可以看到 ,BigInsights 不但考慮到了單獨(dú)對(duì)數(shù)據(jù)進(jìn)行處理的能力,還考慮到了和傳統(tǒng)數(shù)據(jù)庫(kù)軟件、傳統(tǒng)數(shù)據(jù)分析軟件集成的能力,另外也提供了對(duì)系統(tǒng)進(jìn)行管理監(jiān)控等功能。下面的章節(jié)將集中在 BigInsights 的應(yīng)用模塊 (Jaql,biggSheets, Jaql 和 DB2 的集成 ) 進(jìn)行闡述。
1. Jaql--BigInsights 平臺(tái)提供的查詢語(yǔ)言
作為一個(gè)優(yōu)秀的并行計(jì)算平臺(tái),Hadoop 雖然已經(jīng)被廣泛驗(yàn)證,但是在 Hadoop 上開(kāi)發(fā) MapReduce 程序需要較長(zhǎng)的開(kāi)發(fā)周期,開(kāi)發(fā)人員需要充分理解 MapReduce 計(jì)算框架和 HDFS 文件系統(tǒng)的原理和實(shí)現(xiàn)才能編寫出性能較好的 MapReduce 程序。作為下一代數(shù)據(jù)分析平臺(tái)的重要基礎(chǔ),人們也一直在探討是否可以提供一種類 SQL 的描述性語(yǔ)言來(lái)屏蔽 MapReduce 的實(shí)現(xiàn)細(xì)節(jié),從而讓開(kāi)發(fā)人員可以能夠更加關(guān)注業(yè)務(wù)邏輯本身而不是計(jì)算機(jī)程序的實(shí)現(xiàn),目前應(yīng)用的比較廣泛的有 Pig 和 Hive。Pig 提供了一種基于 PigLatin 的描述性語(yǔ)言,Hive 則提供了一種類 SQL 的描述性語(yǔ)言,而 IBM BigInsights 則集成了另外一種描述性語(yǔ)言,JAQL(Json Analysis Query Language)。JAQL 以 Json 數(shù)據(jù)類型為基礎(chǔ),采用一種在 Linux 系統(tǒng)中廣泛應(yīng)用的 Pipeline 模式來(lái)定義數(shù)據(jù)流的走向,如下例所示:
read(hdfs('foo'))->transform $.id ->write(hdfs('ids'));
上例中,我們先從 HDFS 文件 foo 中讀出所有的數(shù)據(jù),然后取得每個(gè)記錄的 id 屬性,把它們組成一個(gè)數(shù)組寫到 HDFS 文件 ids 中。因?yàn)樽x操作的對(duì)象是一個(gè) HDFS 文件 ( 可能會(huì)非常大,由很多個(gè) HDFS 的 block 單元組成 ),JAQL 會(huì)根據(jù) HDFS 支持并發(fā)讀取的特點(diǎn),將該操作重構(gòu)為一個(gè) MapReduce 過(guò)程,transform 方法被實(shí)現(xiàn)為一個(gè) map 任務(wù),分布到整個(gè)集群中來(lái)執(zhí)行。
每個(gè) map 任務(wù)分別讀取 foo 的一個(gè) block 單元,然后生成一個(gè) ids 的 block 單元。最后從用戶的角度來(lái)看,生成的 ids 不是一個(gè)文件,而是一個(gè)目錄,里面包含了分散在各個(gè) datanode 上的 block 單元。根據(jù) HDFS 的定義,該文件夾可以被當(dāng)成一個(gè)整體來(lái)操作。
JAQL 提供了一系列類似的方法,允許用戶讀寫 HDFS,HBase,數(shù)據(jù)庫(kù),本地文件系統(tǒng)等各種各樣的數(shù)據(jù)格式,提供了諸如 Transform, Group, Join 等各種常用的方法,允許用戶來(lái)完成基本的數(shù)據(jù)操作。除了這些內(nèi)建的操作外,用戶也可以通過(guò)自己編寫 Java UDF 來(lái)擴(kuò)展 JAQL 的功能。對(duì)于一套比較完整的操作集合,也可以定義模塊來(lái)實(shí)現(xiàn)代碼的重用。
采用 JAQL,包括 Pig 和 Hive,作為與 Hadoop 的交互語(yǔ)言大大降低了 MapReduce 開(kāi)發(fā)人員的技術(shù)門檻,這種語(yǔ)言的另外一個(gè)潛在優(yōu)勢(shì)在于,隨著這些語(yǔ)言的不斷成熟和算法的不斷優(yōu)化,可能不需要編程人員了解具體的實(shí)現(xiàn)細(xì)節(jié)而獲得優(yōu)異的性能,就像人們?cè)趥鹘y(tǒng)數(shù)據(jù)庫(kù)中為優(yōu)化 SQL 所做的一樣。
2. Jaql 與 DB2 的集成 --BigInsights 平臺(tái)對(duì)數(shù)據(jù)庫(kù)的支持
作為企業(yè)級(jí)的應(yīng)用平臺(tái),IBM BigInsights 不僅推出了這種全新的數(shù)據(jù)分析框架,也提供了與傳統(tǒng)數(shù)據(jù)庫(kù),數(shù)據(jù)倉(cāng)庫(kù)集成的機(jī)制,從而允許用戶能夠無(wú)縫的處理新舊平臺(tái)中的數(shù)據(jù)。這種集成體現(xiàn)在以下兩個(gè)方面,JAQL 本身提供了一種訪問(wèn)數(shù)據(jù)庫(kù)的機(jī)制,允許用戶在 JAQL Query 中編寫 SQL 語(yǔ)句,通過(guò) JDBC 訪問(wèn)數(shù)據(jù)庫(kù)中的數(shù)據(jù),另一方面,IBM BigInsights 也提供了一個(gè)模塊,允許用戶在 SQL 語(yǔ)句中編寫 JAQL 語(yǔ)句。
第一種方向的集成相對(duì)簡(jiǎn)單,是對(duì) JAQL Io 層的一個(gè)簡(jiǎn)單擴(kuò)展,后一種集成方向的實(shí)現(xiàn)則相對(duì)復(fù)雜,圖 2 描述了這種集成的一個(gè)邏輯示意圖。
圖 2. Jaql 和 DB2 的集成示意圖
整個(gè)解決方案的主體由兩部分組成:JAQL Server 是對(duì) JAQL 的一個(gè)擴(kuò)展,它提供了一組 RESTful 的操作,允許用戶通過(guò) HTTP 的方式提交,查詢或者終止一個(gè) JAQL 查詢。JaqlSubmit 是 DB2 的一個(gè) scalar UDF,它允許用戶在 DB2 的 SQL 語(yǔ)言中提交一個(gè) JAQL 查詢,HdfsRead 是 DB2 的一個(gè) table UDF, 它允許用戶通過(guò) DB2 訪問(wèn)存儲(chǔ)在 HDFS 中的數(shù)據(jù)。這種設(shè)計(jì)框架的一個(gè)主要優(yōu)點(diǎn)是在保證互聯(lián)互通的同時(shí),可以最大限度的使得各個(gè)模塊的之間保持松散耦合。結(jié)合 DB2 的 partition 技術(shù),該方案還可以實(shí)現(xiàn)文件的并發(fā)讀取,最大限度的獲得 Hadoop 計(jì)算集群的性能優(yōu)勢(shì)。
下面是使用 jaql-db2 集成的功能的一個(gè)例子,這個(gè)例子中我們選取出版年份為 1930,1997,1998 年的數(shù)據(jù)的信息。清單 1 中是所有書(shū)籍的信息,以 json 格式存儲(chǔ)在文件中。 要使用 Jaql 和 DB2 集成的功能,我們必須執(zhí)行一下步驟:
1、注冊(cè)兩個(gè) jar 包,并且為 DB2 創(chuàng)建兩個(gè) UDF, 這些步驟在 BigInsights 安裝后都在 jaql-db2/scripts 目錄下,我們可以通過(guò)清單 2 中描述的腳本來(lái)運(yùn)行。
2、啟動(dòng) JaqlServer,此服務(wù)使 Jaql 能夠接受以 HTTP 消息傳遞過(guò)來(lái)的 Jaql 指令。
3、使用 UDF 對(duì)數(shù)據(jù)進(jìn)行分析查詢,本例中的查詢語(yǔ)句和結(jié)果如清單 3 所示。
清單 1. 使用 DB2 來(lái)查詢 HDFS 上的數(shù)據(jù)
$ cat books.json [ {publisher: 'Scholastic', author: 'J. K. Rowling', title: 'Deathly Hallows', year: 2007}, {publisher: 'Scholastic', author: 'J. K. Rowling', title: 'Chamber of Secrets', year: 1999, reviews: [ {rating: 10, user: 'joe', review: 'The best ...'}, {rating: 6, user: 'mary', review: 'Average ...'}]}, {publisher: 'Scholastic', author: 'J. K. Rowling', title: 'Sorcerers Stone', year: 1998}, {publisher: 'Scholastic', author: 'R. L. Stine', title: 'Monster Blood IV', year: 1997, reviews: [ {rating: 8, user: 'rob', review: 'High on my list...'}, {rating: 2, user: 'mike', review: 'Not worth the paper ...', discussion: [{user: 'ben', text: 'This is too harsh...'}, {user: 'jill', text: 'I agree ...'}]}]}, {publisher: 'Grosset', author: 'Carolyn Keene', title: 'The Secret of Kane', year: 1930} ]
清單 2. 注冊(cè) UDF 及其 Jar 包
sh install.sh db2 -tvf createJaqlSubmitFunc.clp db2 -tvf createModuleFunc.clp
清單 3. 使用 DB2 來(lái)查詢 HDFS 上的數(shù)據(jù)
$ db2 -tvf simpleTest1.clp select a.* from table(hdfs_read(jaql_submit('read(file(''/opt/ibm/biginsights/jaql-db2 /test/books.json''))->filter $.year in $yearlist_TMP-> transform { $.publisher, $.author , $.title, $.year }-> write(del($out_location$,{ schema: schema { publisher:string, author:string, title:string, year:long }}));','', 'localhost','8200','600000' ))) as a C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 ---------------------------------------------------------------- -------------------- ---------------------- ------------- ------ ----- --- ---- -------- ------ ------ "Scholastic" "J. K. Rowling" "Sorcerers Stone""Scholastic" "J. K. Rowling" "Sorcerers Stone" 1998 - - - - - - - - "Scholastic" "R. L. Stine" "Monster Blood IV" "Scholastic" "R. L. Stine" "Monster Blood IV" 1997 - - - - - - - - "Grosset" "Carolyn Keene" "The Secret of Kane" 1930 - - - - - - - - 3 record(s) selected. 1930,1997,1998
BigInsights 不僅提供了數(shù)據(jù)查詢的語(yǔ)言,與數(shù)據(jù)庫(kù)系統(tǒng)的集成,另外還提供了一個(gè)重要的產(chǎn)品模塊— Big Sheets。它允許用戶利用瀏覽器抓取自己感興趣的網(wǎng)頁(yè)信息,這對(duì)于獲得那些并不是一直存在的網(wǎng)頁(yè)信息來(lái)講尤其具有重要的意義。除此以外,它還可以支持不同格式的文件信息的導(dǎo)入,并且可以用來(lái)對(duì)這些信息進(jìn)行注解和具體分析。BigSheets 應(yīng)用到了幾種開(kāi)源項(xiàng)目如 Hadoop、Nutch、Pig 來(lái)實(shí)現(xiàn)公眾可閱覽的私用云計(jì)算,目前該技術(shù)已經(jīng)應(yīng)用到大英圖書(shū)館中。 BigSheets 的整個(gè)應(yīng)用可以分為以下幾個(gè)步驟:
1、抓取信息或?qū)胄畔ⅲ脩艨梢灾贫ㄐ枰ト⌒畔⒌?web 地址,可以選擇多種格式的文件如本地或遠(yuǎn)程的 Json, CSV, RSS 格式文件,也可以利用 bigsheets 提供的 API 來(lái)書(shū)寫自己的文件閱讀模塊。
2、對(duì)信息進(jìn)行處理,BigSheets 提供了類似 Excel 表的很多對(duì)數(shù)據(jù)進(jìn)行處理的功能,比如對(duì)數(shù)據(jù)列進(jìn)行排序,利用關(guān)鍵字進(jìn)行篩選等功能。
3、導(dǎo)出經(jīng)過(guò)分析后的數(shù)據(jù)存儲(chǔ)到特定位置。
此外,BigSheets 的所有操作,比如 import, filter, macro 都是以插件的方式進(jìn)行實(shí)現(xiàn),也就是說(shuō)用戶完全可以使用 BigSheets 為不同功能提供的不同接口來(lái)實(shí)現(xiàn)功能的自定義,然后安裝自己編寫好的插件即可。 下面給出了利用 BigSheets 進(jìn)行數(shù)據(jù)分析的實(shí)例圖,其中圖 3 展示了使用 BigSheets 來(lái)對(duì)本機(jī)的網(wǎng)頁(yè)進(jìn)行抓取,在此圖中可以看到用戶可以對(duì) BigSheets 進(jìn)行相應(yīng)的抓取設(shè)置,比如抓取網(wǎng)頁(yè)地址,抓取粒度,是否需抓取固定鏈接的數(shù)據(jù)等。圖 4 給出了 BigSheets 中對(duì)數(shù)據(jù)進(jìn)行篩選操作的示例,此例中是對(duì)已存在數(shù)據(jù)的第一列進(jìn)行時(shí)間上面的篩選。
圖 3. BigSheets 進(jìn)行網(wǎng)頁(yè)信息抓取實(shí)例圖
圖 4. BigSheets 進(jìn)行信息篩選實(shí)例圖
IBM 構(gòu)建了 BigInsights 平臺(tái)來(lái)為用戶提供從大量的信息中提取有用信息進(jìn)行分析決策的解決方案,它被用來(lái)解決在當(dāng)前信息分析中亟待解決的幾大問(wèn)題:極大數(shù)據(jù)量的處理,數(shù)據(jù)來(lái)源的多樣性,數(shù)據(jù)分析的敏捷性,數(shù)據(jù)分析的持久性。隨著 BigInsights 的不斷發(fā)展,我們將支持更多的基于 Hadoop 的開(kāi)源項(xiàng)目,根據(jù)用戶的特定需求提供更多更好的解決方案。
詳情請(qǐng)咨詢!
客服熱線:023-66090381
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn