高技能人才或是未來 5-10 年大數據發展的最大瓶頸

大數據無疑是當下最流行的熱詞和前沿技術之一。本質上,大數據具有三大類特徵:快速、海量和複雜,大多數公司都在經歷著這三大特徵的各種形態組合。目前,這些特徵中,還存在很多較難以解決的挑戰,諸如處理數據流中的丟失、重複問題,數據質量參差不齊,數據存儲成本高,大數據人才缺乏等。在本文中,我們將對“大數據”的問題進行拆分,是什麼使大數據充滿挑戰,以及現在我們如何用最新的方法解決這些問題。

本文最初發佈於 Towards Data Science 網站,經原作者授權由 InfoQ 中文站翻譯並分享

在本文中,我們將對“大數據”的問題進行拆分,是什麼使大數據充滿挑戰,以及現在我們如何解決這些問題。大數據一度成為流行語,但本質上它是指具備這三大類特徵的數據:快速,海量和複雜。讓我們仔細研究下這些特徵,舉一些例子,看看如何用最新的方法解決這些難題。

“大數據是描述海量的高速、複雜和多變數據的一個術語,這些數據需要結合先進的技能和技術來實現信息的捕獲、存儲、分發、管理和分析”( TechAmerica Foundation’s Federal Big Data Commission, 2012 )

高技能人才或是未來 5-10 年大數據發展的最大瓶頸


高速的數據

高速的數據指什麼?高速的數據指在短時間內產生的大量的數據。比如汽車工廠的傳感器數據,溫度監測器,飛行儀表等產生的數據。

高速數據通常被認為是實時的或是準實時的數據流。數據流本質上是在生成後就發給處理器的數據包(比如天線收到的電視信號或是通過固話傳輸的語音電話)。實時數據的定義值得深入討論,但是它本質上可以歸結為需要在毫秒內被更新的數據。處理數據流有很多挑戰,包括在採集時不丟失數據、處理數據流中的重複記錄、流數據與更大的歷史數據集集成、以及進行實時分析。

傳統的數據流服務比如 Rabbit MQ 和 Active MQ 只在單節點上運行因此收到了服務器能力的限制。Apache Kafka 引入了分佈式流服務的概念,使得數據流可以分散到多個節點(服務器)上。這實現了高吞吐的流處理,每秒能達到數百萬條。隨著服務向雲上的遷移,開發者不用再管理底層的硬件。亞馬遜的 Kinesis 和谷歌的 Pub/Sub 將後方的服務器完全抽離,使開發者能夠更專注於業務邏輯和數據。

ELK 是常用的在流式數據上作實時分析的技術棧。ELK 由多個工具組成,用 Log Stash 將多種數據源的數據傳輸進 Elastic Search(ES)。在 ES 中存儲的數據可以輕鬆的通過特定的短語和關鍵詞檢索到。Kibana 是 ES 最上層的工具,它在數據流入時就能進行實時分析,用戶可以通過它來查詢數據、為數據創建度量。

海量數據

“大數據”的第二個

特徵是數據量足夠大。

典型的例如一個包含頂級投資銀行 20 年股票交易歷史的超大數據集,20 年間所有信用卡的交易記錄,或是熱門網站(如 buzz feed)的用戶交互信息等。通常這些數據都會在 TB 甚至 PB 量級。

高技能人才或是未來 5-10 年大數據發展的最大瓶頸


處理超大數據集通常會受到存儲和處理數據的計算資源的限制。通常一塊商用硬盤可以容納 1TB 的數據量。有些數據集能有好多 PB(相當於上千塊硬盤的容量)。這些數據需要在數據中心內跨多個服務器(或傳統的 RAID 盤)存儲。除此之外,處理這些數據也需要大量的物理內存和 CPU。

Hadoop(一個開源分佈式大數據處理生態)的出現一定程度上降低了數據處理的成本。這套系統的核心是 Hive,一種能像數據庫一樣存儲數據的類 SQL 處理系統。數據處理在商用硬件上進行,使用 Map-Reduce 算法(專門為分佈式處理設計的算法)。這些服務器通常被存放在數據中心。但是,管理維護數據中心和 Hadoop 套件的成本非常高。

但最近,很多的存儲和處理都轉移到了雲上,比如 Amazon Web Service (AWS) 和 Google Cloud Platform (GCP) 這些主流玩家。AWS 和 GCP 都提供受管理的 map reduce 或 spark 服務(AWS Elastic Map Reduce 以及 GCP Cloud data proc)。他們也提供大規模可擴展的數據庫服務(分別是 Google Big Query 和 AWS Redshift),能為 PB 級的數據集提供關係型數據庫服務。這些解決方案最大的優點是用戶不用管理底層的硬件,可以專注於更重要的任務,如存儲 / 移動數據或者是寫 SQL。這個生態中的典型玩家是 Snowflake,在 AWS 中提供即買即用的數據處理服務。

複雜數據

“大數據”的第三個特徵是複雜。在解釋什麼造成了數據的複雜性前,我先講下理想的數據集是什麼樣的。理想的數據集有預先定義的 schema,每種數據類型(string, number, date)都有定義好的主鍵,以及完善的數據字典。數據集中沒有重複,所有的值都是精準的。

複雜數據的概念和理想數據完全相反。所有數據集都有一定的複雜性,但有一些天生更難處理。通常這些複雜數據集沒有定義結構(沒有行列結構),經常變化,數據質量很差或沒有記錄。

高技能人才或是未來 5-10 年大數據發展的最大瓶頸


比如人工輸入的醫生的筆記、博客的文字、時刻更新的網頁日誌以及深嵌套的 XML 或 JSON 文件。

為複雜數據做快速標註時,大多數不好的數據應該在源頭就進行識別。數據工程師需要構建足夠強壯的系統來快速獲取和過濾這些數據集,但是這些數據最終還是要在源頭糾正。此外,如果可以,我們建議在數據產生的源頭定好 SLA 來減少低質量的數據,使數據更好管理。

處理複雜數據集,讓它們能遵從整潔的格式需要下很大的功夫。每種數據質量問題都需要區別處理,比如記錄重複、主鍵缺失、字符 / 字符串的格式錯誤等。

有很多工具可以用來處理這種數據。通常數據科學家和工程師會用 Jupyter notebook 以及 Pandas 或 Spark 來處理、分析、可視化這些數據集。Jupyter 為開發者提供了交互式的環境使他們能在代碼中逐行遍歷數據集,從而節省很多時間。Databricks 也提供了非常好的數據處理和分析環境,包含了一個類似 Jupyter notebook 的 UI、獨有的 Spark 特性、以及簡單易用的節點管理能力。

還有很多第三方的工具,比如 Trifacta,能夠自動進行一些數據清洗任務,通過提供 UI 和非常好的功能代替完全手寫的數據清洗代碼,來加速清洗和分析任務。Google Cloud 在 GCP 中提供了這個工具 cloud Data Prep。

小結

可以看出,這些特徵中的任何一個挑戰都很難解決。但是,大多數的公司都經歷著這三種問題的各種形態組合。挑戰變得更龐大了,這需要衡量不同的工具和方法來解決他們特定的問題。

向雲服務的轉移很大程度上降低了處理和管理大數據的壁壘,公司不再需要建設數據中心並且花大量的預算在專用軟件上。但是招聘懂得如何使用正確的工具來處理大數據問題的人才仍然是個難題。

降低大數據使用門檻的下一步是利用機器學習技術來理解數據的結構以及監測數據發生的變化。由於高技能人才將成為處理大數據的瓶頸,未來 5-10 年間產生的下一代工具,很可能會關注這些特徵。

希望這篇文章能為你提供關於大數據全面而簡潔的概述!

原文鏈接:

https://towardsdatascience.com/what-exactly-is-big-data-in-2020-9acee48e8dd7


分享到:


相關文章: