第一章 導論
1.3 各章節敘述
國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
2
Reduce(化簡)來並行處理大規模的資料。首先 Map 會把巨量資料(Big Data)依據 Key 切 割分成許多小資料,完成Map 工作之後,系統會接著對新產生的資料進行清理(Shuffle) 和排序(Sort),之後再進行 Reduce 操作,資料根據 Key 值進行適當的合併,最後系統透 過Reduce,依據相同的 Key 值合併這些 Key/Value。雖然 Hadoop 的 MapReduce 能夠處 理巨量資料,但是僅能作比較簡單的資料分析。
本研究主要構想以R 語言為基礎,分析集中於 Hadoop cluster 的 FOAF 社群網路資 料,之後再討論R 使用 MySQL[23]資料庫與 Hive[31]的運算效能與分析結果。首先是 R+Hadoop Streaming 分析(RHS Analytics),在 Hadoop cluster 環境下,使用 Hadoop Streaming 架構與 R 語言作簡易統計分析,第二部分是 R+MySQL 分析(RMS Analytics),
利用R 軟體與 MySQL 資料庫解決 R 記憶體不足的問題,評估 MySQL 對於大量的 FOAF 資料處理效能,作為R+Hive 分析的對照組;第三部分是 R+Hive 分析(RH Analytics),
使用 Hive,結合 R 與 Hadoop/MapReduce 兩者的優點,得以分析處理巨量的社群網路 資料,最後討論R 使用 MySQL 與 Hive 的效能比較。
1.3 各章節敘述
本文第二章針對本篇論文的研究背景,研究相關的專有名詞以及技術說明,包括 Hadoop、Hive 與 R 語言。第三章則是針對目前的相關研究現況進行比較和分析,包含 FOAF(Friend Of A Friend)與社會網路分析(Social Network Analysis,SNA),並探討本研
究與相關文獻的差異性。第四章為方法架構設計,本研究提出的三種FOAF 資料分析架
構,包括R+Hadoop Streaming 分析(RHS Analytics)、R+MySQL 分析(RMS Analytics)與 R+Hive 分析(RH Analytics)等研究方法。第五章為系統實作,第六章為結論與未來展望。
‧
Hadoop 是 Apache Hadoop 的是一個開放原始碼(open-source software)計劃項目,以 Java 為基礎的軟體框架提供存儲和管理巨量資料(Big Data),同時兼具高可靠度、擴展性
的分散式運算環境。無論是結構化與非結構化資料,Hadoop 同時提供快速和可靠的分
析能力。
Hadoop 是一個受到 Google 的 MapReduce 和 Google FileSystem(GFS)[17]論文的啟 發完成的計畫,Hadoop 的核心主要是 MapReduce 與 HDFS,說明如下:
MapReduce:主要的方法是將一個較大的資料區塊分割分解成更小的區塊,並分別
發送到許多不同的節點(node)。每部節點(node)獨立管理自己的系統資源,並於本機上處
理收到的資料,當節點(node)處理完資料後,再將資料回傳給主伺服器。這種分散式架
構能有效率的處理大量資料。
HDFS:Hadoop Distributed File System (HDFS),串連 Hadoop cluster 節點的用於資 料存儲的文件系統。它在許多本地節點的檔案系統連接在一起,使它們成一個大檔案系
統。HDFS 假設節點可能因為硬碟、網路導致故障,因此資料被複製橫跨多個節點,確
保資料的高度可靠性。
除了上述兩個核心組件外,Hadoop 還包括其他重要子項目。
HBase[30]: HBase 的靈感來自 Google 的 BigTable[4]。HBase 具備可擴展和高容錯 優點,是一種架構在HDFS 上面的非關聯式資料庫,採取 Column-Oriented 資料庫設計,
能夠處理PB 等級以上的資料。
Zookeeper[32]:維護與管理 Hadoop cluster 的集中式服務。Zookeeper 提供一種分散 式配置服務,同步服務和命名註冊表中的分散式系統,簡化分散式系統管理與降低系統 複雜度。如使用zookeeper 管理 HBase 的 HMaster 跟 RegionServer。
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
4
圖 1:Hadoop ecosystem
2.2 Hive
Hive 是 Hadoop 的生態系統(Ecosystem)的一個重要工具,提供類似 SQL 語法用於查 詢存儲在Hadoop 分散式資料系統(HDFS)的資料。Hive 是建立在 Hadoop 上的資料倉儲 (Data Warehouse )基礎構架。它提供資料處理相關的工具,對於所需之數據進行資料擷 取、轉換、載入(ETL,Extract-Transform-Load),這是一種可以存儲、查詢和分析存儲在 Hadoop 中的大規模資料的機制。
多數的資料倉儲應用程式使用關聯式資料,使用SQL 作為查詢語言。Hive 降低了
資料倉儲應用程式轉換到Hadoop 的門檻,熟悉 SQL 的開發人員容易使用 Hive 將 SQL 應用程式移植時到Hadoop。Hive使用的查詢語言稱作Hive Query Language,簡稱HiveQL 或HQL,用來查詢存放在 Hadoop cluster 的資料。SQL 允許使用者在高層資料結構上工 作。它不要求使用者指定資料的存放方法,也不需要使用者了解具體的資料存放方式,
同樣的,使用者透過Hive 可以專注於查詢處理資料本身,Hive 轉換 HiveQL 變成 MapReduce 工作,進而充分利用 Hadoop 的特性。
Hive 的架構如圖 2,主要包括:
Web GUI:Hive 提供幾種圖形操作介面服務,如商用軟體與開放原始碼的 Karmasphere 與Cloudera 的 Hue,這些服務對應到 Hive 的 HWI(Hive Web Interface),使用前必須啟動 WHI 服務。
CLI:Hive 的指令列模式,直接使用指令操作 Hive。
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
5
Thrift server:Apache Thrift 是一種跨語言的軟體開發架構,Hive 使用這項服務,開發人 員可以使用C++、Java、Python、PHP、Ruby、Erlang、Perl、C#等語言與 Hive 連結,
或是使用JDBC、ODBC 連接外部資料庫。
Metastore:一個單獨的關聯式資料庫,系統預設的是 derby,也可以使用 MySQL,用來 儲存操作Hive 產生的表格結構等資料。
Driver:包括 Complier、Optimizer 和 Executor 等元件,它的作用是將 HiveQL 語法進行 解析、編譯優化與產生執行計劃,然後使用Hadoop/MapReduce 架構執行任務。
圖 2:Hive 架構圖
‧
備整合資料處理及統計功能,包括線性與非線性模型(linear and nonlinear modelling)、統 計檢定方法( statistical tests)、時間序列分析(time-series)、分類(classification)與集群分析 (clustering)等分析方法,以及陣列、矩陣的算與繪圖工具,同時也是一種語法簡單的程 方式,主要可以分為平行處理、網格運算(Grid Computing)、Hadoop/MapReduce 等解決 方法。常見的平行處理方式包括MPI(Message Passing Interface),是一種電腦或節點(Node)
在叢集(cluster)環境的管理通訊標準,使用者的程式可以同時在許多電腦上執行,啟動
平行分散式運算,有效提升執行效率。另一個是SNOW(Simple Network of Workstations),
採用Master / Slave cluster 架構,提供高階的溝通介面給 Master 來管理 Slave 工作站。
平行處理可以有效提升R 的運算效率,但是 cluster 繁雜的設定與管理,通常是 R 使用
者進入平行處理的障礙,使用者本身必須對於cluster 有深度的了解,才能有效的使用 R
的平行處理機制
另一個方式是 Hadoop/MapReduce 架構,主要的概念是把一件工作拆解成許多小工作,
最後再將小工作的輸出合併成為單一結果,有效的使用平行化技術處理大量的資料,主 流的技術有Hadoop Streaming、RHIPE 與 RHadoop 等方式,待章節 3.3 再作詳細說明。
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
7
圖 3:R 使用介面圖:Console(上)與 RStudio(下)
‧
FOAF(Friend of A Friend)是一種以 RDF 為基礎架構,描述個人和他們的社會網絡關 係,包括自己的名字、電子郵件信箱、個人喜好與認識的朋友等資訊。我們可以利用 FOAF-a-Matic [20]製作 FOAF 資料,命名為 foaf.rdf,放到適當的網站讓所有人可以公開 下載,網路上的搜尋機器人可以發現這個檔案,並且利用檔案內容中的rdfs:seeAslo 發 現其他的FOAF 檔案,藉以串成整個社群網路。底下為 foaf.rdf 的範例。
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:foaf="http://xmlns.com/foaf/0.1/">
<foaf:Person>
<foaf:name>Leigh Dodds</foaf:name>
<foaf:firstName>Leigh</foaf:firstName>
<foaf:surname>Dodds</foaf:surname>
<foaf:mbox_sha1sum>71b88e951cb5f07518d69e5bb49a45100fbc3ca5</foaf:mbox_sha1sum
>
<foaf:knows>
<foaf:Person>
<foaf:name>Dan Brickley</foaf:name>
<foaf:mbox_sha1sum>241021fb0e6289f92815fc210f9e9137262c252e</foaf:mbox_sha1sum
> <rdfs:seeAlso
rdf:resource="http://rdfweb.org/people/danbri/foaf.rdf"/>
</foaf:Person>
</foaf:knows>
</foaf:Person>
</rdf:RDF>
FOAF 從 OWL(Web Ontology Language)借用反函數屬性 Inverse Functional Property (IFP) [13]的概念,一個反函數屬性是一個簡單的概念,它的數值標識唯一個資源。如果 一個屬性P 被標記爲反函數(InverseFunctional),那 麽對於所有的x、 y 和 z,P(y,x) and P(z,x) implies y = z。舉例來說,若 y、z 代表不同的實例,x 為身分證號碼。如果 y、z
兩人具有相同的身分證號碼(x),那麼可以推斷這兩個實例指的是同一個人。
‧
複的foaf:name,卻不可能會有相同的 email 或是社群網路帳號,FOAF 定義代表個人的 唯一識別符號(unique identifiers)如下:
foaf:aimChatID foaf:homepage foaf:icqChatID foaf:jabberID foaf:mbox
foaf:mbox sha1sum foaf:msnChatID foaf:weblog foaf:yahooChatID
文獻[18]利用唯一識別符號(unique identifiers)特性,從多個社群網站蒐集 FOAF 檔 案,使用OWL 推理引擎並使用與 foaf:knows 與 FOAF inverse property,進而從不同的 FOAF 檔案,推論得到同一個使用者。研究主要分析:
(1) Network Statistics:平均最短路徑(average shortest path length)
(2) Account Statistics:多個社群網路的使用者帳號數量分析,如長尾理論結果。
(3) Friendship Statistics:少數擁有多個帳號的使用者,具有良好的連結能力,位居各社 群網路的核心與溝通橋梁。
另外文獻[10]從網路蒐集的 FOAF 檔案分成 blog 與非 blog 兩類,主要分析:
(1) FOAF 文件中所使用的 foaf:mbox/ foaf:dateOfBirth 與
foaf:mboxsha1sum/foaf:homepage,後者比較沒有隱私的疑慮,因此出現的頻率較高。
(2) FOAF 文件使用 foaf:knows / rdfs:seeAlso 與其他 FOAF 文件相連接,blog 網站使用 的頻率比非blog 網站較為頻繁。
(3) 結合網路上不同的 FOAF 檔案,拼湊完整的個人資料。
(4) Social network analysis,網路由多少人(foaf:name)所組成,分析統計入/出分支度 (in/out-degree)、Patterns of Connected Components 等。
‧
Agent age nick publications
Person made (maker) mbox currentProject name primaryTopic
(primaryTopicOf) homepage pastProject
title Project weblog account
img Organization openid OnlineAccount depiction
(depicts) Group jabberID accountName
familyName member mbox_sha1sum accountServiceHomepage givenName Document interest PersonalProfileDocument knows Image topic_interest tipjar
based_near topic (page) sha1
workplaceHomepage thumbnail workInfoHomepage logo schoolHomepage
資料來源:http://xmlns.com/foaf/spec/
3.2 社會網路分析(Social Network Analysis,SNA)
社會網絡分析是依據數學方法與圖論等理論為基礎,分析與計算個人與團體組織之 間的關係,藉以找出網路中重要的個體與特性。常見的分析測量指標[14]有 Degree centrality(分支度)、Betweenness centrality(中介中心性)、Closeness centrality(接近中心性) 與Eigenvector centrality(特徵性)等。
Degree centrality (分支度):
(1) 定義:在圖上與頂點相連的邊數為分支度,是圖形中最簡單的測量指標。
(2) 意義:若為有向圖(directed graph)則分入/出分支度(in/out-degree),in-degree 是 incoming edges 的數量,out-degree 則是 out-going edges 的數量;若為無向圖(undirected graphs),total degree = in-degree + out-degree。degree 主要是評估團體組織中的核心人物,
degree 比較高的節點(vertex)表示與其他個體的往來較為頻繁,擁有較高的影響力。
‧
Betweenness centrality (中介中心性):
(1) 定義:是指所有節點之間的最短距離通過該節點的次數。
(2) 意義:因為該點對於網路上的其他節點而言,等於是兩者之間的最短路徑。具有 Betweenness 較高的節點,代表在網路上資訊流通影響力比較大。
∑
< Closeness centrality(接近中心性):
(1) 定義:是指該節點與圖中其它所有點的路徑之距離總和。
Eigenvector centrality(特徵性):
(1) 定義:該節點的評估指標由所有連接的節點決定。
(2) 意義:是 Degree Centrality 的改良方法,也稱作 Bonacich Power Centrality[3],對於 一樣擁有相同的degree Centrality 的兩個節點來說,不同的相鄰的節點可能有不同的影 響力。舉例來說,認識十個普通人與認識十個企業家的影響力可能不一樣。分析這種通 過與具有高度值的相鄰節點所獲得的間接影響力。
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
12
1 ) (
) ,
(
I R
1R
C α β
=α
−β
− 公式(4)α is a scaling vector, which is set to normalize the score.
β reflects the extent to which you weight the centrality of people ego is tied to.
R is the adjacency matrix (can be valued) I is the identity matrix (1s down the diagonal) 1 is a matrix of all ones.
另外小世界網路(small world networks / small world phenomenon),也稱作六度分隔理論
(Six Degrees of Separation),原始理論是 Milgram 1967 準備數百封的相同收件人的信件,
(Six Degrees of Separation),原始理論是 Milgram 1967 準備數百封的相同收件人的信件,