SharePoint 文件庫 大數據分析 - Hadoop + RBS 陳宏毅 Lex 資深顧問經理 楊修 Evaon 資深分析師 ESi Technology 直通國際股份有限公司
SharePoint 文件庫 大數據分析 - Hadoop + RBS 陳宏毅 Lex 資深顧問經理 楊修 Evaon 資深分析師 ESi Technology 直通國際股份有限公司
“Big data is like teenage sex: everyone talks about it, nobody really knows how to do it, everyone thinks everyone else is doing it, so everyone claims they are doing it” Dan Ariely, Duke University 大數據就像是青少年在談「性」這檔子事:每個人都在說這件事,沒有人真的知道是怎麼回事,每個人都覺得別人都在做,所以每個人都宣稱自己也在做…
SharePoint內容發展之現況及趨勢 範例展示: 大數據技術應用-如何將文件庫轉化為知識庫
SharePoint內容發展之現況及趨勢
整體數位內容發展趨勢 從2013到2020,IDC預測數位內容在總量、上雲、價值及分析各方面都會有大幅度的成長 From 2013 to 2020, the digital universe will grow by a factor of 10 – from 4.4 trillion gigabytes to 44 trillion. It more than doubles every two years In 2013, less than 20% of the data in the digital universe is “touched” by the cloud, either stored, perhaps temporarily, or processed in some way. By 2020, that percentage will vvvvvvvvvvvvdouble to 40% grow by a factor of 10 Growth Touch IDC estimates that in 2013 perhaps 5% was especially valuable, or “target rich.” That percentage should more than double 10%+ by 2020 as enterprises take advantage of new Big Data and analytics technologies and new data sources Value Analysis In 2013, only 22% of the information in the digital universe would be a candidate for analysis, i.e., useful if it were; less than 5% of that was actually analyzed. By 2020, the useful percentage could grow to more than 35% 資料來源: IDC,2014年
SharePoint 內容調查主要發現 Metalogix為SharePoint內容管理軟體的主要提供廠商之一,於全球擁有超過20,000客戶,其於2013年1月針對其客戶進行了關於SharePoint Content的內容調查,結果摘錄如下 Content Size 約有50%的訪查客戶有超過1 TB的SharePoint Content,15%的客戶則有超過10 TB的Content Content Growth 過去12個月中,其受訪客戶的SharePoint Content平均成長了將近75% Content On-Premises 55%的客戶仍繼續留在完全On-Premises的SharePoint上,其餘45%r計畫移動部分或全部的內容至Office 365 資料來源: Metalogix,SURVEY ON THE GROWTH OF CONTENT AND THE USE OF SHAREPOINT,2013年1月
2012-2017年全球資訊服務市場規模 系統整合服務於2014年佔全球資訊服務市場的42.22%,此數字在2017年預計將降低為41.07% 資料來源: MIC,2014年11月
2012-2017年台灣資訊服務市場規模 系統整合服務於2014年佔台灣資訊服務市場的70.02%,此數字在2017年預計將成長為70.18% 資料來源: MIC,2014年11月
文件庫內容分類調查發現 根據Concept Searching (SharePoint Content歸類、分類法和搜尋軟體的領導開發商) 於2015年7月針對Metadata Tagging 的調查報告,有以下主要發現 人工分類仍為主要分類方式,但結果並不令人滿意 94% of SharePoint organizations rely on manual tagging and are not extremely satisfied, or highly satisfied, with the outcomes of their tagging efforts 定義SharePoint內容的Metadata是企業流程及效率的殺手 Metadata tagging continues to be a source of organizational inefficiencies, and is the root cause of many business process failures. 不正確的Metadata影響不僅於搜尋、記錄管理、資料安全、協同合作等 The implications of inaccurate and subjective metadata stray far beyond search, impacting records management, eDiscovery, migration, data security, collaboration, and the list goes on. 自動化定義Metadata或者提高分類正確性,才能在企業中具有實際效益 Unless manual metadata tagging can be eliminated, or is consistently accurate, which is highly unlikely, there is not much that organizations can achieve in terms of improvements and business benefits
摘要 全球數位內容未來10年將會增加10倍,可分析的資料比例從22%上升到37% Metalogix約有50%的客戶有超過1 TB的SharePoint內容,2012年其受訪客戶的SharePoint內容平均成長了將近75% 系統整合服務於2014年佔台灣資訊服務市場的70.02%,此數字在2017年預計將成長為70.18% 自動化定義Metadata或者提高分類正確性,才能在企業中具有實際效益
SharePoint 文件庫大數據分析應用之技術架構
SharePoint內容分析之應用技術 我們選擇使用RBS及HDP作為SharePoint內容分析的應用技術 RBS (Remote Blob Storage) 遠端儲存技術 HDP (Hortonworks Data Platform) 可在Windows上安裝的 Hadoop分支套件 需具有以下功能 能夠以File Server的形式存取SharePoint的內容 大量節省Content DB所需空間 提升SharePoint管理大量內容的效能及效益 能處理TB以上的資料量 能夠處理非結構化的內容 On-Premises的解決方案 能夠在Windows上的平台運作
SharePoint管理大量檔案之困境 許多企業使用SharePoint作為內容管理平台,但是如果有大量文件/檔案的管理需求時,常常會遇到以下問題及限制 效能下降 當文件檔案數量逐漸增加後,系統效能下降的情況越來越嚴重 建置/維運複雜 建置中型/大型內容/文件管理平台時,需要考量到Content DB Size 200G限制,增加規劃、建置及維運上的複雜性 儲存成本高 所有文件檔案都是儲存在SQL Content DB中,而SQL Server的儲存成本相對較高 備份費時 需要花費更多的時間進行備份及還原,增加系統中斷的時間 封存、資理清理受限 如果將資料封存於Tier 1 Storage,於成本考量上不符合經濟效益
SharePoint為什麼不適合管理大量檔案? 以上問題及限制其實是有一個共同點,造成這些問題及限制的原因都是同一個:SharePoint將所有檔案都以BLOB(Binary Large Objects)存放在SQL Databases中! 2000 GB Content 效能下降 建置/維運複雜 儲存成本高 備份費時 Achieving/House Keeping規劃受限 XLS VIDEO IMG TIFF PDF PPT DOC CAD Content & Metadata 200GB SharePoint Content Databases
(Externalized BLOB Storage) SharePoint啟用RBS的效益 一般而言SharePoint Content Databases中有90~95%是由BLOBs組成,透過RBS(Remote BLOB Storage)技術,可將BLOBs移出SQL Databases Metadata Content CAD PPT PDF XLS DOC TIFF VIDEO IMG 2000 GB Content 200 GB Content 1800 GB Content SharePoint Content database Local Disk Network Storage Cloud (Externalized BLOB Storage)
BLOBs移出SQL Server解決了問題 透過RBS,SharePoint將可以突破原本在大量文件檔案情境下的限制,並且解決大量文件檔案所帶來的問題 效能下降:當文件檔案數量逐漸增加後,Content DB Size並不會跟著大幅成長,效能也不會因此受到影響,而且大型檔案(>100MB)上傳/下載速度會顯著提升 建置/維運複雜:移出BLOBs之後,實務上超過90%的內容都會放在外部儲存裝置,因此即使是大型內容文件管理平台,絕大部分Content DB也不會超過200G,不會造成Content DB規劃建置的複雜性 儲存成本高:超過90%的內容(BLOBs)可以放置在成本相對較低的外部儲存裝置中 備份費時:Content DB的數量和大小不會因為大量文件檔案而增加,並且透過DFS, Snapshoting及Mirroring同步BLOBs所在的外部 Archiving/House Keeping規劃受限:可以透過HSM將Inactive或者需要封存的BLOBs資料移到成本更低的儲存裝置,大幅降低成本
RBS客製後可提供更多好處 在BLOBs Store中保留檔案名稱以及SPS文件庫資料夾階層 可結合檔案系統的壓縮及加密文件功能 原生RBS可解決大量文件檔案帶來的問題及限制,但根據過往的客戶需求及專案經驗,建議客製RBS可加入更多的功能讓整個使用情境更加完善 在BLOBs Store中保留檔案名稱以及SPS文件庫資料夾階層 大幅提供Remote BLOBs Storage內容的可讀性及獨立性,即使當SPS Content DB意外毀損時,也不會造成文件檔案無法使用 不需透過SharePoint,可以使用其他方式(Ex:FTP)來直接讀取外部儲存裝置的文件檔案 可結合檔案系統的壓縮及加密文件功能 可以針對檔案進行壓縮後再儲存,進一步降低儲存成本 文件檔案可以進行加密,提高檔案傳輸及儲存的安全性 支援網路及雲端儲存裝置 透過SpacePoint,BLOBs可以根據企業需求,除了Local Disk之外,可以選擇存放在網路儲存裝置(NAS, SAN)或者雲端儲存裝置上
Hortonworks Data Platform (HDP) 公司簡介 Hortonworks公司,由Yahoo和Benchmark Capital於2011年7月聯合成立。隨後同年底,微軟即宣布加入團隊,確定將產出支援Windows Azure和Windows Server版本的HDP產品,並於2013年正式公布Beta版本,2015年7月釋出2.3版本 Hortonworks Data Platform (HDP) Hortonworks Data Platform (HDP)為可執行於Windows Server上提供完整支援的開放原始碼Hadoop分支套件,此舉將讓Hadoop開發許多本身沒有Linux技術的企業組織。Hortonworks的Corporate Strategy副總裁Shaun Connolly解釋,將HDP移往Windows背後的想法是這樣的:「基本上這是市場趨勢所致的決定,」他說道:「Hadoop是為了擴充量產硬體市場所建置,而量產硬體市場有70%Windows的專業領域,且以安裝Windows為基礎。」 HDP On-Premises vs. HDInsight HDP為On-Premises的解決方案 HDInsight為Cloud的解決方案 Not only open-source – but built in the open.
HDP功能架構 HDP具有的功能可歸納為以下5大區塊:Data Management, Data Access, Data Governance and Integration, Security, and Operations Provision, manage, monitor and operate Hadoop clusters at scale Load and manage data according to policy Access data from a variety of engines HDFS & YARN : The core of Hadoop Authentication, Authorization, & Data Protection 資料來源: http://hortonworks.com/hdp
Hadoop運算叢集架構 在Hadoop運算叢集架構中,這些伺服器依據用途可分成Master Node和Slave Node,Master負責分配任務,而Slave負責執行任務 HDP Slave Data Node 擔任 Slave 的角色(可以有多個),接受 Name Node 的指揮,實際儲存資料的 副本,並執行檔案的讀/寫,將資料提供給 Tasktracker 進行運算 Tasktracker 接受 Jobtracker 的工作指派,跟 Data Node要求運算的資料,執行實際的運算後,將結果回傳給 Jobtracker 彙整 Name Node 擔任 Master 的角色(只能有一個)負責巨量資料的所有檔案切割、存取,並對每個檔案片段建立副本,以達到備援機制 Jobtracker 擔任 Master 的角色(只能有一個),接受Client發起的工作,進行工作排程 ,將工作分派給TaskTrackers 執行,並彙整 Tasktrackers 的計算結果後,將結果回傳給使用者 HDP Master Windows Server Pig Pig提供了一個Script語言Pig Latin,用來撰寫MapReduce程式。Pig會將這些腳本程式轉換成在Hadoop中執行的MapReduce Java程式 Hive Hive是建置在HDFS上的一套分散式資料倉儲系統,可讓使用者以慣用的SQL語法,來存取Hadoop檔案中的大型資料集
範例展示: 大數據技術應用 -如何將文件庫轉化為知識庫
RBS功能展示 透過展示原生及ESi客製後RBS的運作機制,來感受客製化RBS的優點 9/9/2017 12:03 AM 先讓大家看一下我們這邊要給Hadoop作為Input的檔案 在裝好客製化RBS的環境內,指定一個文件庫A,解釋此文件庫並不受客製化RBS管理,並指令另一個文件 庫B作為對照組,解釋此屬客製化RBS管理範圍 將檔案上傳到文件庫A,並於完成後,於檔案系統內檢視,介紹RBS所具有的優點,並強調缺點 將檔案上傳到文件庫B,並於完成後,於檔案系統內檢視,確認檔案不但有出現,而且是可讀的,區分版 本的,並帶過之後會被Parser拿來做為Input © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
範例展示之情境 情境說明 現況分析及解決方案 9/9/2017 12:03 AM 範例展示之情境 情境說明 某企業內部已經擁有累計多年的SharePoint文件庫,內容主要為IT人員上傳日常SharePoint系統維運之紀錄文件。這些文件都沒有被分類,今IT主管規劃推行知識管理應用,希望透過大數據分析技術將這些文件進行有效地分類,轉換成為IT部門的知識庫,以達到三項目的: 共享知識 新進同仁教育訓練素材 開放給公司其他部門進行參考 現況分析及解決方案 已經擁有的文件庫內容,大多是PDF或是Office相關類型的文檔,不但數量龐大,且種類繁多,屬於非結構化的巨量資料,因此適合使用HDP平台的HDFS檔案系統,以乘載大數據引擎運作。 大家好,我是楊修 現在為各位展示如何使用Hadoop,來運用少量的文件建立分類模型,並且取得自動分類結果 首先介紹我們的背景說明 有使用SharePoint的企業內,通常IT人員是必備的。因為這是一個需要維運的東西 IT人員的另外一個主要業務,是幫忙排除企業內部的資訊方面狀況,像是系統不穩定,或是該如何進行某 任務 經年累月下來,IT部門都已經養成習慣,將自己遇到的問題,做成自己的文件庫,日後若重複情況,就能 很快地找到答案,節省時間 就像是個人筆記,甚至可以說是小型的知識庫 然而個人的畢竟是自己維護的,團結力量大 某天部門主管爭取到的一筆經費,希望能建立部門內的知識庫 一來是整合大家個人知識庫成為部門知識庫,進行知識共享 二來是可以讓新進同仁透過知識庫快速進入狀況 第三是計畫日後可以開放給公司其他部門進行參考,直接的省下IT同仁面對各種疑難雜症的時間 已知現況是 大家都習慣用Word當作檔案來上傳,而且經年累月下來,數量十分可觀 指派全部的人替自己過往的筆記進行歸類動作,消耗工時過大,派一個專人負責,卻又怕分錯,幾經考 量,決定靠Big Data幫忙分類… © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
9/9/2017 12:03 AM 文件庫大數據分析解決方案 執行此解決方案需要具備四大類型技術或知識的人員參與,並且依據PDCA(Plan-Do-Check-Action)流程持續改善分析結果 Domain Knowledge 需有具備分析主題相關裡用知識的人員參與 本情境中需有人員具備IT SharePoint技術維運經驗 Text Mining 關鍵詞擷取 文件分群 斷詞 定義分類 定義關鍵字 建立模型 數據分析 驗證結果 修正模型 SharePoint 需具備SharePoint RBS 設定及客製技術 需對文件庫內容結構及Metadata有設定經驗 Hadoop HDP Hive Pig SQOOP © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
定義分類 首先要定義知識分類結構,建議先決定大分類再決定次分類, 分類建議符合MECE原則,達到相互獨立,完全窮盡 IT QA Lib 9/9/2017 12:03 AM 定義分類 定關鍵字 建立模型 數據分析 驗證結果 修正模型 定義分類 首先要定義知識分類結構,建議先決定大分類再決定次分類, 分類建議符合MECE原則,達到相互獨立,完全窮盡 IT QA Lib Windows Server System Windows Server PowerShell SQL Management Windows Client Operation System Internet Explorer Office Office Visio SharePoint 現在來逐步地說明每個階段,我們的做法。 第一步就是訂定知識,這時候就會請具有領域知識的人來主導,我們會選擇這個主題,也是因為我擁有這 部分的領域知識,如果要我去準備旅遊的、還是醫療的領域,那就難了 依照我們的情境來講,負責這階段任的人,就會思考整體需求跟實際狀況:因為是IT部門,並且又是完整 採用微軟系統的環境,主要的文件都屬於疑難雜症的QA,所以可以分成畫面上這三大類:Window Server、Window Client、Office 然後再進一步區分次分類,這時候要掌握分類的原則,避免模糊的分界,這樣一來會讓模型的建立提升難 度 © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
定義關鍵字 經由領域熟悉人員以及具有文字探勘經驗的專家共同合作 針對各知識分類定義出適當的關鍵字與權重 知識分類 關鍵字清單 9/9/2017 12:03 AM 定義分類 定關鍵字 建立模型 數據分析 驗證結果 修正模型 定義關鍵字 經由領域熟悉人員以及具有文字探勘經驗的專家共同合作 針對各知識分類定義出適當的關鍵字與權重 知識分類 關鍵字清單 Windows Server System\Windows Server Windows Server, Windows Server 2008, Windows Server 2012, Domain, Active Directory, AD, Domain Control, DC,群組管理原則 … Windows Server System\Windows PowerShell PowerShell, Select-String, Select-String, Read-Host, Write-Host, Get-Process, Get-Counter, Import Module, Set-ExecutionPolicy … Windows Server System\Microsoft SQL Server SQL 2005, SQL Server 2005, SQL 2008, SQL Server 2008, SSMS, SSIS, DB Mirror, Connection String, INSERT INTO, DELETE FROM … Windows Client\Internet Explorer Internet Explorer, IE8, Internet Explorer 8, IE9, Internet Explorer 9, IE10, Internet Explorer 10, IE11, Internet Explorer 11,開發者工具 … Windows Client\Operation System WinXP, Windows XP, Win8, Windows 8, WinVista, Windows Vista, Win7, Windows 7, 市集,使用者帳戶控制, UAC, Windows Update … Office\Microsoft Office Office 2003, Office 2005, Office 2007, Office 2008, Office 2010, Office 2012, Office 2013, Office 365, Doc, Docx, Xls, Xlsx, Ppt, Pptx … 接著決定關鍵字。 對訂出來的每一個知識分類,去尋找適合的關鍵字,說起來很容易,但對於一個沒有甚麼文字探勘技 術的我而言,卻在這邊吃了不少苦。 關鍵字的草稿階段產出,會像這樣,當然,礙於篇幅,這只是部份 每一個分類,有哪些關鍵字,先逐一列出,並且先給予一樣的關鍵字 接著個別點出一些,真的很精確的字詞,像是”Windows Server”,去強化關鍵字權重 這個表完善之後會匯入SharePoint的DB,做為知識分類的關聯資料,但這部分不是我們這個主題的重點, 所以並不多做解釋 這張表,會不斷的變化,增減,就算模型建立完成,之後的調整一樣會需要他,所以用Excel列出關鍵 字是一個好辦法,方便我重複的匯入WSS_Content 資料庫,還可以達到備份的效果 © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
建立模型 130個經過人工正確分類的文件 65個文件作為建模組進行模型建立 65個文件作為驗證組驗證模型 9/9/2017 12:03 AM 定義分類 定關鍵字 建立模型 數據分析 驗證結果 修正模型 建立模型 開始建立模型之前,需要先人工針對每個知識分類找出一定數 量的檔案,接著將一半作為建模組建立模型,另一半用來驗證 模型正確率 130個經過人工正確分類的文件 65個文件作為建模組進行模型建立 65個文件作為驗證組驗證模型 在開始訂關鍵字前,我們要準備兩批檔案,兩批人工分類過,個分類都有一定數量的檔案,要用來當作模 型建立,和模型驗證使用 建模組,是因為我們要建立模型需要大量的關鍵字 關鍵字不但要正確,還要精確,並且涵蓋面要廣,舉例來說,Windows Client的OperationSystem分類, 如果把重點放在市集,就會涵蓋不到比較舊版的作業系統相關問題,但如果沒有市集這個關鍵字,卻 又沒有辦法正確分類專門描述市集疑難雜症的QA文件 驗證組,是為了驗證模型的公正性 不論如何努力的從建模組中,取得關鍵字。都必須要有心理準備,未來的待分類檔案,他們是不可預 期的,所以要有一批檔案來驗證,這批檔案是模擬未來的未知分類檔案,因此不可以從中擷取關鍵 字,這樣才能夠公平的檢查我們的模型 這兩批檔案,數量不一定要多,我自己在建立的時候,八個分類,每個分類只有五個檔案,就能夠得到不 錯的正確率。不過前提是,檔案的人工分類一定要正確 © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
9/9/2017 12:03 AM 定義分類 定關鍵字 建立模型 數據分析 驗證結果 修正模型 數據分析 本解決方案使用Hadoop進行文件庫內容的數據分析,使用SQOOP將資料在RDBMS與HDFS之間移轉,利用Hive存放資料結構,使用Pig進行關鍵字計算 RDBMS → HDFS SQOOP [SQL]dbo.KmKeyword -> [Hive]default.KMKeyword Hive Create [Hive]SPSDemo.KmKeyword Transfer [Hive]default.KMKeyword to [Hive]SPSDemo.KMKeyword Parse Text File Pig Find Keyword Generate [HDFS]/Demo/Final.txt HDFS → RDBMS Sqoop [HDFS]/Demo/Final.txt → [SQL]dbo.MappingResult © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
9/9/2017 12:03 AM HDP語法簡介─SQOOP sqoop import --connect jdbc:sqlserver://WS2012R2-DBAP --username hadoop --password hadoop --table KMKeyword --hive-import --hive-overwrite --m 1 把Keyword的資料,從WS2012R2-DBAP的資料表KMKeyword中,匯回Hive的同名資料表中 sqoop eval --connect jdbc:sqlserver://WS2012R2-DBAP --username hadoop --password hadoop --query “Truncate Table [dbo].[MappingResult]“ 把MappingResult資料表內容清空 sqoop export --connect jdbc:sqlserver://WS2012R2-DBAP --username hadoop --password hadoop --table MappingResult --export-dir /Demo/Final.txt --input-fields-terminated-by “\t” --input-lines-terminated-by “\n” --update-mode allowinsert 把Final.txt檔案內容回存到MappingResult資料表 簡單的,向大家介紹一下等等要使用的語法,首先是基本的匯入匯出工具SQOOP 還算直覺的,利用SQOOP的三個大功能,匯入、執行、匯出,分別對應到指令的第二段,import、eval、 export,要注意的地方是,eval本來是用於執行一個select來及時的取回遠端SQL裡面的資料的,但是因為我 們在把Final.txt回存回去之前,不希望保留前一次的結果,所以藉由eval的方式來truncate結果資料表 © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
9/9/2017 12:03 AM HDP語法簡介─Hive Create Database if not exists SPSDemo Comment ‘SPS Demo’; 建立SPSDemo這個資料表,假如它不存在 Create External Table if not exists SPSDemo.KMKeyword (ID String, NodeID String, Keyword String, FileNameWeighted Int, FileContentWeighted Int) Row Format Delimited Fields Terminated By ‘\t‘ LOCATION ’/Demo/Input/KMKeyword’; 建立SPSDemo.KMKeyword資料表,假如它不存在,此屬外部資料表,儲存位置在/Demo/Input/KMKeyword Insert Overwrite Table SPSDemo.KMKeyword Select * From default.KMKeyword; 把內部資料表轉存並覆蓋外部資料表的內容 接著是Hive,這是基本的Create Database和Create Table,語法,要注意的是這個External關鍵字,沒有這關 鍵字的時候Hive是使用所謂的內部資料表,這是一個由Hive管理的資料倉儲區,基本上不會允許使用者去 對那個區域做檔案系統的存取,除非你強迫得把權限打開,但我們想說,就不要做這種本來就不允許的事 情,就像我們不太會直接去動SQL Server裡面的master資料表一樣,這不是權限打開就做得到的問題了。 所以我們要加上這個external關鍵字,讓Hive把資料放在特定的位置,換句話說,就是放在一個可以被其他 人讀寫的位置 接著第三個語法,會把內部資料表轉存到外部資料表,以便給Pig讀取 © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
9/9/2017 12:03 AM HDP語法─Pig Keywprd = LOAD ‘/Demo/Input/KMKeyword/*’ USING PigStorage(‘\t’) as ( id:chararray, termid:chararray, keyword:chararray, filenameweighted:int, filecontentweighted:int); 把Keyword的資料載入 run -param fileIdx=‘0’ -param ProcessRoot=‘$ProcessRoot’ -param FullLocalPath=‘C:/hdp/Demo/RBS/01/Exchange2013_循環紀錄問題.txt’ -param FileRelatedPath=‘/01/Exchange2013_循環紀錄問題.txt’ c:/hdp/Demo/Script/PigSingle.pig; 執行C:/hdp/Demo/Script/PigSingle.Pig這個Pig Latin Script檔案,並提供相關參數 store FinalResult into ‘/Demo/Exported/Script_0’ USING PigStorage(‘\t’, ‘noschema’); 把FinalResult這個Relation存入/Demo/Exported/Script_0這個位置 接續上一張投影片,這邊可以看到Pig去那個位置,把Keyword資料載入 之後,逐一地去跑單檔語法,單檔語法比較複雜,並且不容易解釋,這邊就暫時略過 最後一句,是把結果儲存到HDFS的指定位置,供後續的語法使用 © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
Demo─數據分析 用滿滿的Log文字來感受Hadoop的力量吧 9/9/2017 12:03 AM © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
節錄文件:Hyper-V效能耗損數據資料.docx之數據分析結果 9/9/2017 12:03 AM 定義分類 定關鍵字 建立模型 數據分析 驗證結果 修正模型 驗證結果 – 關鍵字計算結果 Hadoop將產出每一個文件在各關鍵字的計算結果,每個關鍵字 皆有對應的知識分類以及權重用於計算總分 節錄文件:Hyper-V效能耗損數據資料.docx之數據分析結果 知識 關鍵字 次數 權重 得分 Windows Client\Operation System OS 1 2 作業系統 Windows Server System\Windows Server Hypervisor 3 Windows Server 4 Windows Server 2012 Windows Server System\Microsoft SQL Server SQL SQL Server 原則上,跑完之後我們就可以利用SQL的View來把每一個檔案的關鍵字尋找結果,和之前定義的知識分 類、關鍵字權重,交集起來變成這樣的一張表 理解上就是,這樣的一個檔案“HyperV效能耗損數據資料.txt”,一共找到了這些關鍵字:OS、作業系統、 Hypervisor、Windows Server、SQL,而且也可以看到個別的權重,最後一個欄位,是次數和權重數的乘積 和。 © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
驗證結果 – 計算總分 根據關鍵字數量及權重,根據各分類的關鍵字及權重計算分數, 將可以得到每份文件在每一個知識分類中所得到的分數 9/9/2017 12:03 AM 定義分類 定關鍵字 建立模型 數據分析 驗證結果 修正模型 驗證結果 – 計算總分 根據關鍵字數量及權重,根據各分類的關鍵字及權重計算分數, 將可以得到每份文件在每一個知識分類中所得到的分數 節錄三份文件在各知識分類之總分計算結果 建模組檔案 (已人工分類) 知識分類 總分 HyperV效能耗損數據資料 Windows Client\Operation System 3 Windows Server System\Windows Server 10 Windows Server System\Microsoft SQL Server 如何透過Guid來搜尋到電腦或使用者帳號 Windows Client\Internet Explorer 1 Windows Server System\Windows PowerShell 4 19 Exchange_2010_管理傳送權限為會消失 20 下一個動作就是把每個檔案,在有涵蓋到的分類中,他的分數合計起來,變成那一個分類的總分,就會得 到這張表 另外,我用了一點浮凸效果,將每個檔案最高分的分類,給特別強調出來,就會變成下一張表 © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
驗證結果 – 得到分類結果 每個檔案得到最高分的分類將作為自動分類的結果 節錄部分文件之分類結果 建模組檔案 (已人工分類) 9/9/2017 12:03 AM 定義分類 定關鍵字 建立模型 數據分析 驗證結果 修正模型 驗證結果 – 得到分類結果 每個檔案得到最高分的分類將作為自動分類的結果 節錄部分文件之分類結果 建模組檔案 (已人工分類) 數據分析所得之知識分類 2012_server_需要禁用_exe_設定過程中有問題 Windows Server System\Windows Server Hyper-V效能耗損數據資料 Windows_Server_2012_essentials_會不定時關機 Windows_storage_server_2012_r2_容錯移轉 如何透過Guid來搜尋到電腦或使用者帳號 Windows Server System\Windows PowerShell Exchange_2010_管理傳送權限為會消失 exchange_server_backup_system_error exchange_server_with_2_domain_one_is_in_hk_but_the_cn_domain_cannot_work_properly 這張表就是所謂的分析結果了,在模型建立的時候,我們在這時候遭遇到非常多的挫折,因為發現分類錯 誤率,高得嚇人 剛剛說過,建模組的這些檔案,已經人工分類過了,會放在01資料夾裡面,意思就是他應該要被歸類在 Windows Server System\Windows Server 裡面才對 © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
修正模型 根據建模組進行數據分析所得之分類結果,針對分類錯誤之文 件需進一步了解分類錯誤原因,有必要時需修正模型以提高準 確率 9/9/2017 12:03 AM 定義分類 定關鍵字 建立模型 數據分析 驗證結果 修正模型 修正模型 根據建模組進行數據分析所得之分類結果,針對分類錯誤之文 件需進一步了解分類錯誤原因,有必要時需修正模型以提高準 確率 判定錯誤→關鍵字調整 建模組檔案 (已人工分類) 知識分類 2012_server_需要禁用_exe_設定過程中有問題.txt Windows Server System\Windows Server Hyper-V效能耗損數據資料.txt Windows_Server_2012_essentials_會不定時關機.txt Windows_storage_server_2012_r2_容錯移轉.txt 如何透過Guid來搜尋到電腦或使用者帳號.txt Windows Server System\Windows PowerShell Exchange_2010_管理傳送權限為會消失.txt exchange_server_backup_system_error.txt exchange_server_with_2_domain_one_is_in_hk_but_the_cn_domain_cannot_work_properly.txt 但是,有一個分錯了,如果照比例看,8個檔案分錯1個,錯誤率是12%左右 向大家報告,我第一批結果,錯誤率將近20%,經過了十多次的反覆調整分析,終於降到了5%左右 這邊主要是要給大家看一下分錯的樣子,跟錯誤率的改念。 這時候因為錯誤率過高,就要回到一開始的表格去調整關鍵字或是權重,然後重新的跑分析語法 那因為我只利用Hadoop去搜尋關鍵字,所以如果沒有異動關鍵字,只有調整他們的權重,可以透過SQL View直接看到結果,不用重跑Hadoop script © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
本次模型驗證結果 利用建模組完成模型建立後,即可以驗證組來進行驗證。依據 驗證組的分類結果,此模型的分類正確率將近94% 建模組 驗證組 9/9/2017 12:03 AM 本次模型驗證結果 利用建模組完成模型建立後,即可以驗證組來進行驗證。依據 驗證組的分類結果,此模型的分類正確率將近94% 建模組 驗證組 總文章數 65 雙重結果 2 雙重結果 0 誤判 1 誤判 4 誤判率 3 / 60 = 5% 誤判率 4 / 65 = 6.15% 在循環多次之後,終於讓模型的正確利達到水準,在最一開始,5%就是我的目標 但走到這一步,或許是缺乏了文字探勘技術的關係,我已花了不少的時間,反覆的調整關鍵字和權重 最後終於達到目標,接著就要用驗證組來驗證 理想狀態是,建模組來驗證後得到的成績依然是5%左右,但也是有一些例外狀況可能發生 像是畫面上的資料,建模組的錯誤率5%,但是用驗證組卻發現提升到了10% 這表示還有一些關鍵字是驗證組有,但建模組卻缺乏的,這時候可以考慮把分錯檔案納入建模組,相對 的,這就必須另外再補充更多的檔案到驗證組,因為不論如何,驗證組的檔案不可以參與建模,因為擔心 會影響公正性 © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
Hadoop Analyze Result 再回頭看看一大堆的Log吧 9/9/2017 12:03 AM 好,讓我們再回來看看執行結果吧 [HDFS]/Demo/Final.txt [SQL]關鍵字尋找結果 [SQL]分類得分 [SQL]分類小計 [SQL]自動分類結果 再回頭看看一大堆的Log吧 好,讓我們再回來看看執行結果吧 © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
解決方案可加強之方向 於系統上建立分類錯誤回饋機制 導入斷詞技術自動建立模型(關 鍵字與權重) 9/9/2017 12:03 AM 解決方案可加強之方向 於系統上建立分類錯誤回饋機制 由於文件內容隨著時間會不斷更新,新的知識分類、關鍵字出現,現有模型的準確率可能會逐漸下降。為了維持甚至提高模型的準確率,當使用者發現分類錯誤的文件內容時,需提供容易操作的回饋機制,讓系統管理員能夠將使用者的回饋反應在模型的修正上 定義分類 定義關鍵字 建立模型 數據分析 驗證結果 修正模型 通過驗證後,就是模型上線,每天排程把未分類的檔案進行分析和自動分類 當關鍵字或是知識分類有變動的時候,就會把範圍放大到全體文件庫的檔案 同時也要人工定期定量抽檢,讓文件庫可以保持狀況 另外,如果使用者發現誤判現象越來越嚴重,很自然的就會對這個知識庫失去信心,我們要避免這種狀況 發生 所以最好要有管道收集使用者回饋的誤判資料,甚至要適當的鼓勵這個行為 導入斷詞技術自動建立模型(關 鍵字與權重) 人工定義關鍵字與權重是一件非常繁重且不 符合人體工學的一種方式,如果在數據分析 中引入斷詞技術,將可計算出每個分類文件 的所有字詞及數量,並且計算出權重 © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
Lesson Learned 中文字顯示 Sqoop搭配Hive External使用 Pig Latin 的多工處理 因為目前大多數參考資料,都還是以英文為主,因此當我們發現中文字變成亂碼的時候,花了不少時間尋找解決辦法 後來發現,設定Terminal的頁碼,加上指定顯示的字體後,就可以正常顯示了 Chcp 65001 設定字體為 Lucida Console Sqoop搭配Hive External使用 因為要對Keyword做加工運算,所以要先匯入Hive裡面,但預設的Hive table有內建的權限控制,讀取HDFS不易 最後採用外部資料表來達到此目的 Create external table ….. LOCATION ‘/Demo/Input/Keyword’… Keyword = Load ‘/Demo/Input/Keyword/*’ Pig Latin 的多工處理 在早期的嘗試中,我以PowerShell Script來逐一的遞送檔案,等待當前檔案處理完成後,才遞送下一個,結果發現Cluster有許多閒置資源 多方嘗試後,一度採用Start-Job的方式,將所有檔案一次性遞送,並在背景執行,結果發現,因為每一次遞送檔案,送出端(本機)就會生出一個JVM來讓PIG運作,結果導致送出端資源不足而卡住 最後採用的方式就是,利用PowerShell動態的建立檔案,讓所有檔案的執行都由Run的語法來呼叫sub-script file,終於達到多工效果,Master-Node會自動安排所有的Slave-Node去進行處理 Reducer 總是只有1 Pig Latin中,有幾個段落會花費較長的時間,經觀察後,發現是因為Pig裡面的一個class有bug,無法自動偵測適當的Reducer數量 尋找答案的結果是,針對Group, Cross 等會指派Reducer的命令,指定他的Parallel參數
Q & A