• 沒有找到結果。

第一章 導論

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

1

R

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 準備數百封的相同收件人的信件,

相關文件