CSDN:請簡單地介紹一下本身。git
蔣守壯:首先很是感謝CSDN可以給我此次被專訪的機會,可讓我從新審視本身的職業發展歷程,也但願可以幫助一些同行的朋友們。目前就任萬達網絡科技集團有限公司,是一名大數據分析師和大數據平臺架構師。github
我是電子專業出身,但本身對軟件行業很是感興趣,因此大學裏一邊學習本專業課程,一邊到圖書館或活躍在相關技術網站上學習計算機專業課程。雖然累點苦點,可是爲本身職業生涯打下了紮實的基礎。sql
從畢業後至今,我已經在IT圈跌打滾爬5年多了,經歷了不少,有苦有樂,這些都豐富了本身的閱歷。工做以來,我一直熱愛分享和交流技術,熱衷於寫博客(CSDN),參與開源社區(Apache一些頂級項目),也樂於在Github上開源本身的軟件產品。慢慢地,我從一名菜鳥,成長爲資深工程師和架構師,可是我要學習的東西太多了,我會一直堅持下去。docker
CSDN:你是如何與計算機結緣,踏上大數據開發之路的,可否跟咱們分享一下。數據庫
蔣守壯: 其實我與計算機結緣的緣由,可能會和一些朋友類似,是由於黑客,以爲很酷,也頗有挑戰性的。這是一個啓蒙階段,因而我開始漫長的探索,學習彙編,C語言,C++,Java;學習計算機原理,Linux內核;學習網絡,TCP/IP;學習密碼學;學習各類主流數據庫;學習腳本,Perl,Python,Shell等等。爲了測試一些病毒,由於不可能用本身筆記本的操做系統測試,因而就開始研究虛擬化技術,使用虛擬機搭建各類Linux操做系統進行模擬測試,就這樣,走上了一條不歸路(是技術研究不歸路,不是進局裏了)。在這個探索的過程當中,發現本身對Linux和數據庫方面特別感興趣,因而2011年畢業後就從事了Linux和數據庫方面的工做。編程
從2012年末開始,我開始接觸MPP(大規模並行處理)架構的關係型數據庫,使用和維護過Vertica和Greenplum等MPP架構的數據庫。在電信行業分析TB和PB級別海量數據時性能仍是很是不錯的。可是隨着業務的發展,處理非結構化和半結構化數據的需求迫在眉睫。我一直關注和參與Apache開源社區,見證了Hadoop生態圈的快速發展,Hadoop很是方便處理非結構化和半結構化數據,因而咱們的大數據平臺架構開始融合Hadoop,造成混合架構。隨着Hadoop生態圈家族不斷壯大,支持各類場景的組件出現,SQL支持也很是完善,因而大數據平臺架構就逐漸以Hadoop爲核心來構建。尤爲這兩年來,Spark,Flink等通用並行框架不斷髮展壯大,集成批處理,流計算,實時分析,機器學習和圖計算,爲企業級構建大數據平臺提供更多的選擇。後端
CSDN:分享一下你最近使用的框架,它們都解決了哪些方面的問題。安全
蔣守壯: 前段時間,我使用Kafka,Spark Streaming和HBase來進行實時數據計算分析,將保險用戶相關的數據發送到Kafka消息隊列,後端將從Kafka消費數據,並使用Spark Streaming進行流數據實時分析,而後將處理後的數據寫入HBase集羣中,最後用戶從HBase中獲取分析好的數據。網絡
現階段,咱們基於現有的Hadoop大數據平臺,集成Apache Kylin組件,Kylin能夠對Hive中的表進行關聯後多維度處理,並將結果寫入HBase,其與Hadoop生態圈整合很是完善,很是適合用來作海量數據規模下的OLAP分析,進行實時或準實時查詢上百億數據。另外,Kylin和BI工具也能夠很好的集成,好比Tableau,Saiku等。架構
CSDN:hive的使用場景有哪些?適合實時性強的分析場景使用麼?
蔣守壯: Hive是創建在Hadoop上的數據倉庫基礎構架,它的最佳使用場合是大數據集的批處理做業,通常延遲性比較高,並不可以在大規模數據集上實現低延遲快速的查詢,因此不適合實時性強的分析場景。不過目前Hive底層的計算框架除了支持原生的MapReduce,還支持Tez和Spark,這對提高Hive的查詢處理性能幫助很大,從Hive 2.0版本開始,推薦使用Tez或Spark做爲Hive的計算引擎。
若是但願實時查詢分析,能夠結合Impala,Presto,Drill等開源的交互式、實時的查詢引擎使用,它們可以訪問Hive中的表進行數據查詢分析。
CSDN:hive的技術特色有哪些? 類sql操做啊,內置大量用戶函數udf等等。
蔣守壯: Hive應該是第一個出現的SQL on Hadoop的產品,技術特色以下:
CSDN:Hive建立的內部表和外部表有何異同?
蔣守壯: 這個其實和不少傳統數據庫中的內部表和外部表同樣,沒有什麼差異。
我將從表的建立和刪除兩方面簡單介紹一下:
CSDN:Hive的優化技巧有哪些?好比如何處理數據傾斜、大表與小表join時,如何優化性能。
蔣守壯: Hive優化其實涉及到幾方面,其中一方面是計算引擎方面的優化,好比你使用MapReduce做爲計算引擎,那麼就須要優化MapReduce;若是你選擇Spark做爲計算引擎,那麼須要對Spark進行優化。
這裏我僅從Hive這一層面介紹該如何優化,基本內容以下:
(1)表設計層面優化
(2)語法和參數層面優化
處理數據傾斜的方法其實有不少,不管是Group by仍是Join時出現數據傾斜,其實都是數據熱點的問題,即某些Key值太多,致使都分發到一個節點執行,那麼咱們能夠將數據量比較大的Key拿出來單獨處理,最後再合併到結果集中。若是出現數據傾斜的Key值對結果可有可無,好比空值,那麼咱們能夠過濾處理,或者將空值加上隨機數,進行分發到集羣的全部節點並行處理。固然也能夠利用Hive自帶的參數進行優化,設置當分組或關聯的Key值超過多少數量時,進行單獨處理,即額外啓動一個MapReduce做業處理。 這方面的具體優化過程,請參考個人技術博客。
儘可能將小表放到join的左邊。小表和大表join時,若是差一個以及以上數量級而且小表數據量很小,可使用mapjoin方式,將小表所有讀入內存中,在map階段進行表關聯匹配。大表和大表進行關聯時,要注意數據傾斜的問題。若是兩個表以相同Key進行分桶,以及表的桶個數是倍數關係,可使用bucket join,加快關聯查詢。
(3)Hive Job優化
CSDN:分享一下Hive數據倉庫經驗。
蔣守壯:因爲Hive的類SQL和類數據庫功能,它向非編程人員開放了大數據Hadoop生態系統,Hive也推進了Hadoop的普及和發展。
企業使用Hive來構建數據倉庫,一是能夠節約成本,二是基於SQL開發,將傳統數據庫遷移到Hadoop平臺上分析也相關方便,三是支持和Hive集成的Hadoop生態圈的產品也豐富,知足架構擴展。
在使用Hive來構建企業級數據倉庫時要注意如下幾點:
CSDN:關於技術學習您有什麼心得?咱們上線了知識庫系統化學習的方法,您會怎麼應用呢?
蔣守壯: 其實我學習任何一門新技術的過程都比較類似,能夠總結爲如下幾點:
上面的過程是交互循環的,不是一蹴而就的,你將須要經歷時間的磨練,並且在這過程當中,你會遇到不少問題,必定要對每一個問題刨根問底,從根本上解決,而且堅持作好筆記或寫博客,方便後續查看。
另外,CSDN推出的知識庫,給咱們提供了系統學習的方法。若是我要學習一門新技術,好比Docker,我能夠進入Docker知識庫,裏面列出了Docker的每一個知識點,而且每一個知識點下面都會有該領域的專家精選的博客文章。此外,還能夠把其它平臺上看到的乾貨添加到本身的我的圖譜當中,建立你的專屬知識庫。選擇本身感興趣的知識點進行系統學習,效率很是高。
CSDN:據說你在10月份即將推出本身的第一本技術書籍,請簡單介紹一下。
蔣守壯: Apache的頂級項目Apache Kylin,這是一個開源的分佈式分析引擎,是由eBay研發並貢獻給開源社區,其提供Hadoop之上的SQL查詢接口及多維分析(OLAP)能力以支持超大規模數據。書的名字暫定爲《基於Apache Kylin構建企業級大數據分析平臺》,預計10月份底左右出版,該書比較全面地介紹Apache Kylin的各方面,以及集成到現有的大數據平臺中進行多維數據分析。
關注Kylin項目好久了,也見證了第一個由中國團隊完整貢獻到Apache的頂級項目。尤爲這一年多,Kylin快速發展,功能和穩定性不斷提高,我也積極地參與Kylin開源社區,同時也但願藉助本身的微薄力量來推廣Kylin的使用,幫助更多的朋友認識和使用Kylin來解決企業中基於Hadoop的多維數據分析的需求。
CSDN:你最近關注的技術有哪些?
蔣守壯:這段時間研究的技術,大致上有三方面,這裏我就簡單描述一下,具體你們能夠訪問官網查詢更多內容:
第一方面:自動化運維工具Ansible。Ansible算是比較新的自動運維工具,基於Python開發,集合了衆多運維工具的優勢,實現了批量系統配置,批量程序部署和批量運行命令等功能。研究這方面內容,主要是由於項目組已經實現基於Ansible快速部署高可用而且安全的大數據平臺,提高用戶的體驗效果和滿意度。
第二方面:Flink實時流處理框架。我的一直以爲Flink在實時流方面的架構很是優秀,並且只須要不多的配置就可以實現高吞吐率和低延遲。未來但願在項目中更多地實戰Flink實時流處理應用。
第三方面:Docker容器技術。深刻研究Docker在分佈式和大數據架構中的應用,好比基於Docker構建企業的私用鏡像倉庫,方便企業可以快速部署大數據平臺,也能夠將企業中的一些應用實現Docker微服務化。