精品国产亚洲一区二区三区|亚洲国产精彩中文乱码AV|久久久久亚洲AV综合波多野结衣|漂亮少妇各种调教玩弄在线

<blockquote id="ixlwe"><option id="ixlwe"></option></blockquote>
  • <span id="ixlwe"></span>

  • <abbr id="ixlwe"></abbr>

    中國移動(dòng)研究院常耀斌:商用大數(shù)據(jù)平臺的研發(fā)之路

    我是中國移動(dòng)研究院的資深架構(gòu)師常耀斌。2007年,我加入中國電科,參與并主導(dǎo)設(shè)計(jì)的“全軍一體化指揮作戰(zhàn)平臺”榮獲國家科技進(jìn)步特等獎(jiǎng)。2009年,我出任華為云第一代架構(gòu)師,帶領(lǐng)團(tuán)隊(duì)研制并運(yùn)營了國內(nèi)首個(gè)公有云平臺?;厥?0年多的科研工作歷程,也是中國經(jīng)濟(jì)高速發(fā)展的10多年,中國高鐵、核電、航空、互聯(lián)網(wǎng)、云計(jì)算、大數(shù)據(jù)、人工智能等領(lǐng)域無不銘刻著“中國名片”,這就是科技是第一生產(chǎn)力的實(shí)踐驗(yàn)證!2007年,獲得北郵計(jì)算機(jī)工學(xué)碩士后信心滿滿的踏上了科研之路,一干就是十多年,有苦有淚有艱辛,但收獲的是一種為國家科技發(fā)展能奉獻(xiàn)和敢擔(dān)當(dāng)?shù)呢?zé)任感。

    今天,又一次站在了移動(dòng)互聯(lián)網(wǎng)這個(gè)朝陽產(chǎn)業(yè)的跑道上,和諸多大數(shù)據(jù)和人工智能的世界級大咖共商創(chuàng)新發(fā)展!2012年加入中國移動(dòng)集團(tuán)研究院,擔(dān)任資深大數(shù)據(jù)專家和研究員,主攻大數(shù)據(jù)和人工智能平臺架構(gòu)設(shè)計(jì)和關(guān)鍵技術(shù)研究,并多次受邀在大數(shù)據(jù)行業(yè)和主流峰會(huì)進(jìn)行學(xué)術(shù)交流,在見證我的學(xué)生們歷練為BAT/TMD的技術(shù)專家同時(shí),也悄然實(shí)現(xiàn)著我的技術(shù)夢想-讓高科技研發(fā)標(biāo)準(zhǔn)化和平民化。今天有幸分享商用大數(shù)據(jù)平臺研發(fā)經(jīng)驗(yàn),讓大數(shù)據(jù)知識圖譜在各位的腦海里轉(zhuǎn)起來,并形成商用產(chǎn)品的作戰(zhàn)體系,這是“作為架構(gòu)師,何謂正確?”的行動(dòng)基礎(chǔ)。我分享四大部分:知識分類,系統(tǒng)架構(gòu),核心技術(shù),經(jīng)驗(yàn)分享。具體如下:

    大數(shù)據(jù)知識結(jié)構(gòu)歸類:

    * 文件存儲(chǔ):

    Hadoop HDFS、Tachyon、KFS

    * 離線計(jì)算:

    Hadoop MapReduce、Spark

    * 流式、實(shí)時(shí)計(jì)算:

    Storm、Spark Streaming

    * K-V、NOSQL數(shù)據(jù)庫:

    HBase、Redis、MongoDB

    * 資源管理:

    YARN、Mesos

    * 日志收集:

    Flume、Scribe、Logstash、Kibana

    * 消息系統(tǒng):

    Kafka、StormMQ、ZeroMQ、RabbitMQ

    * 查詢分析:

    Hive、Impala、Pig、SparkSQL、Flink

    * 分布式協(xié)調(diào)服務(wù):

    Zookeeper

    * 集群管理與監(jiān)控:

    Ambari、Ganglia、Nagios、Cloudera Manager

    * 數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí):

    Mahout、Spark MLLib

    * 數(shù)據(jù)同步:

    Sqoop

    * 任務(wù)調(diào)度:

    Oozie

    知識匯總及系統(tǒng)架構(gòu)形成:

    以物聯(lián)網(wǎng)大數(shù)據(jù)平臺的架構(gòu)為例,圍繞著這條主線:基礎(chǔ)架構(gòu)-》離線分析-》離線遷移-》離線同步-》實(shí)時(shí)計(jì)算-》實(shí)時(shí)交換-》實(shí)時(shí)調(diào)度-》實(shí)時(shí)存儲(chǔ)-》智能分析。

    核心技術(shù)(10個(gè)單元)

    第一單元:基礎(chǔ)架構(gòu)-Hadoop的破冰之旅

    Hadoop是一個(gè)由Apache基金會(huì)所開發(fā)的分布式系統(tǒng)基礎(chǔ)架構(gòu)。Hadoop是實(shí)現(xiàn)了真正意義上的去“IOE”,尤其是開啟了擺脫國外高科技公司的全球壟斷時(shí)代,讓全球用戶可以輕松地在免費(fèi)的Hadoop上開發(fā)和運(yùn)行處理海量數(shù)據(jù)的應(yīng)用程序。建議先把Hadoop集群構(gòu)建起來,具體操作見我的博客:https://blog.csdn.net/peter_changyb/article/details/81195920。它主要有以下幾個(gè)優(yōu)點(diǎn):

    * 高可靠性。

    Hadoop按位存儲(chǔ)和處理數(shù)據(jù)的能力值得人們信賴。

    * 高擴(kuò)展性。

    Hadoop是在可用的計(jì)算機(jī)集簇間分配數(shù)據(jù)并完成計(jì)算任務(wù)的,這些集簇可以方便地?cái)U(kuò)展到數(shù)以千計(jì)的節(jié)點(diǎn)中。

    * 高效性。

    Hadoop能夠在節(jié)點(diǎn)之間動(dòng)態(tài)地移動(dòng)數(shù)據(jù),并保證各個(gè)節(jié)點(diǎn)動(dòng)態(tài)平衡,因此處理速度非???。

    * 高容錯(cuò)性。

    Hadoop能夠自動(dòng)保存數(shù)據(jù)的多個(gè)副本,并且能夠自動(dòng)將失敗的任務(wù)重新分配。

    Hadoop可以算是大數(shù)據(jù)存儲(chǔ)和計(jì)算的開山鼻祖,現(xiàn)在大多開源的大數(shù)據(jù)框架都依賴Hadoop或者與它能很好的兼容。具備如下:

    * Hadoop 1.0、Hadoop 2.0

    * MapReduce、HDFS

    * NameNode、DataNode

    * JobTracker、TaskTracker

    * Yarn、ResourceManager、NodeManager

    1.1 HDFS是Hadoop的關(guān)鍵技術(shù)所在

    HDFS目錄操作命令;上傳、下載文件命令;提交運(yùn)行MapReduce示例程序;打開Hadoop WEB界面,查看Job運(yùn)行狀態(tài),查看Job運(yùn)行日志。知道Hadoop的系統(tǒng)日志在哪里。

    1.2 了解并行計(jì)算的核心原理

    MapReduce:分而治之的優(yōu)秀思想;HDFS:數(shù)據(jù)分片和數(shù)據(jù)復(fù)制為核心的技術(shù)。數(shù)據(jù)到底在哪里,什么是副本;

    Yarn如何用分層管理思想革命性的改變了MapReduce的核心架構(gòu)?NameNode職責(zé)?;Resource Manager職責(zé)?

    1.3 親自寫MapReduce程序

    第二單元:離線分析

    2.1 SQL On Hadoop之Hive

    什么是Hive?官方解釋如下:The Apache Hive data warehouse software facilitates reading, writing, and managing large datasets residing in distributed storage and queried using SQL syntax.

    數(shù)據(jù)倉庫物理上是數(shù)據(jù)庫,邏輯上倉庫。有兩個(gè)特點(diǎn):海量數(shù)據(jù)、相對穩(wěn)定的;相對穩(wěn)定,指很少會(huì)被更新和刪除,只會(huì)被大量查詢。而Hive,也是具備這兩個(gè)特點(diǎn),因此,Hive適合做海量數(shù)據(jù)的數(shù)據(jù)倉庫工具,而不是數(shù)據(jù)庫工具。Hive核心技術(shù)講解參見我的博客 https://blog.csdn.net/Peter_Changyb/article/details/81977665

    2.2 安裝配置Hive

    2.3 使用Hive

    2.4 Hive核心原理

    2.5 Hive的基本命令:

    創(chuàng)建、刪除表;加載數(shù)據(jù)到表;下載Hive表的數(shù)據(jù),需要你掌握如下技能:

    * MapReduce的原理;

    * HDFS讀寫數(shù)據(jù)的流程;

    * 學(xué)會(huì)查看日志解決問題;

    * 會(huì)SELECT、WHERE、GROUP BY等SQL語句;

    * Hive SQL轉(zhuǎn)換成MapReduce的關(guān)鍵流程;

    * Hive中常見的語句:創(chuàng)建表、刪除表、往表中加載數(shù)據(jù)、分區(qū)、將表中數(shù)據(jù)下載到本地;

    第三單元:離線遷移

    3.1 HDFS PUT操作

    put命令在實(shí)際環(huán)境中也比較常用,通常配合shell、python等腳本語言來使用。

    3.2 HDFS API調(diào)用

    HDFS提供了寫數(shù)據(jù)的API,自己用編程語言將數(shù)據(jù)寫入HDFS,put命令本身也是使用API。實(shí)際環(huán)境中一般自己較少編寫程序使用API來寫數(shù)據(jù)到HDFS,通常都是使用其他框架封裝好的方法。比如:Hive中的INSERT語句,Spark中的saveAsTextfile等。

    3.3 Sqoop遷移工具

    Sqoop是一個(gè)主要用于Hadoop/Hive與傳統(tǒng)關(guān)系型數(shù)據(jù)庫,Oracle、MySQL、SQLServer等之間進(jìn)行數(shù)據(jù)交換的開源框架。就像Hive把SQL翻譯成MapReduce一樣,Sqoop把你指定的參數(shù)翻譯成MapReduce,提交到Hadoop運(yùn)行,完成Hadoop與其他數(shù)據(jù)庫之間的數(shù)據(jù)交換。自己下載和配置Sqoop。了解Sqoop常用的配置參數(shù)和方法。使用Sqoop完成從MySQL同步數(shù)據(jù)到HDFS;使用Sqoop完成從MySQL同步數(shù)據(jù)到Hive表;如果后續(xù)選型確定使用Sqoop作為數(shù)據(jù)交換工具,那么建議熟練掌握,否則,了解和會(huì)用Demo即可。Sqoop導(dǎo)入Hbase核心代碼見我的技術(shù)博客https://blog.csdn.net/Peter_Changyb/article/details/82557741

    3.4 Flume分布式采集框架

    Flume是一個(gè)分布式的海量日志采集和傳輸框架,因?yàn)?ldquo;采集和傳輸框架”,所以它并不適合關(guān)系型數(shù)據(jù)庫的數(shù)據(jù)采集和傳輸。Flume可以實(shí)時(shí)的從網(wǎng)絡(luò)協(xié)議、消息系統(tǒng)、文件系統(tǒng)采集日志,并傳輸?shù)紿DFS上。因此,如果你的業(yè)務(wù)有這些數(shù)據(jù)源的數(shù)據(jù),并且需要實(shí)時(shí)的采集,那么就應(yīng)該考慮使用Flume。下載和配置Flume。使用Flume監(jiān)控一個(gè)不斷追加數(shù)據(jù)的文件,并將數(shù)據(jù)傳輸?shù)紿DFS;Flume的配置和使用較為復(fù)雜,如果你沒有足夠的興趣和耐心,可以先跳過Flume。核心技術(shù)參見我的技術(shù)博客https://blog.csdn.net/Peter_Changyb/article/details/81213997

    第四單元:離線同步

    Hive和MapReduce進(jìn)行分析了。那么接下來的問題是,分析完的結(jié)果如何從Hadoop上同步到其他系統(tǒng)和應(yīng)用中去呢?其實(shí),此處的方法和第三章基本一致的。

    4.1 HDFS GET命令

    把HDFS上的文件GET到本地。

    4.2 HDFS API

    4.3 Sqoop

    使用Sqoop完成將HDFS上的文件同步到MySQL;使用Sqoop完成將Hive表中的數(shù)據(jù)同步到MySQL。

    4.4 DataX

    DataX 是一個(gè)異構(gòu)數(shù)據(jù)源離線同步工具,致力于實(shí)現(xiàn)包括關(guān)系型數(shù)據(jù)庫(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各種異構(gòu)數(shù)據(jù)源之間穩(wěn)定高效的數(shù)據(jù)同步功能。之所以介紹這個(gè),是因?yàn)槲覀児灸壳笆褂玫腍adoop與關(guān)系型數(shù)據(jù)庫數(shù)據(jù)交換的工具,就是之前基于DataX開發(fā)的,非常好用。現(xiàn)在DataX已經(jīng)是3.0版本,支持很多數(shù)據(jù)源。DataX本身作為離線數(shù)據(jù)同步框架,采用Framework + plugin架構(gòu)構(gòu)建。將數(shù)據(jù)源讀取和寫入抽象成為Reader/Writer插件,納入到整個(gè)同步框架中。三個(gè)核心模塊要理解。Reader:Reader為數(shù)據(jù)采集模塊,負(fù)責(zé)采集數(shù)據(jù)源的數(shù)據(jù),將數(shù)據(jù)發(fā)送給Framework。Writer: Writer為數(shù)據(jù)寫入模塊,負(fù)責(zé)不斷向Framework取數(shù)據(jù),并將數(shù)據(jù)寫入到目的端。Framework:Framework用于連接reader和writer,作為兩者的數(shù)據(jù)傳輸通道,并處理緩沖,流控,并發(fā),數(shù)據(jù)轉(zhuǎn)換等核心技術(shù)問題。

    第五單元:實(shí)時(shí)計(jì)算

    Spark對MapReduce做了大量的改進(jìn)和優(yōu)化,主要包括以下個(gè)方面:

    1)磁盤I/O的讀寫優(yōu)化:

    中間結(jié)果緩存在內(nèi)存中:隨著實(shí)時(shí)大數(shù)據(jù)應(yīng)用越來越多,Hadoop作為離線的高吞吐、低響應(yīng)框架已不能滿足這類需求。Hadoop MapReduce的map端將中間輸出和結(jié)果存儲(chǔ)在磁盤中,reduce端又需要從磁盤讀寫中間結(jié)果,從而造成磁盤I/O成為瓶頸。Spark則允許將map端的中間輸出和結(jié)果緩存在內(nèi)存中,從而使得reduce端在拉取中間結(jié)果時(shí)避免了大量的磁盤I/O;應(yīng)用程序上傳的資源文件緩存在Driver本地文件服務(wù)的內(nèi)存中:Hadoop YARN中的ApplicationMaster申請到Container后,具體任務(wù)需要利用NodeManager從HDFS的不同節(jié)點(diǎn)下載任務(wù)所需的資源(如Jar包),增加了磁盤I/O。Spark則將應(yīng)用程序上傳的資源文件緩存在Driver本地文件服務(wù)的內(nèi)存中,當(dāng)Executor執(zhí)行任務(wù)時(shí)直接從Driver的內(nèi)存中讀取,從而節(jié)省了大量的磁盤I/O。

    2)任務(wù)的并行處理優(yōu)化:

    由于將中間結(jié)果寫到磁盤與從磁盤讀取中間結(jié)果屬于不同的環(huán)節(jié),Hadoop將它們簡單地通過串行執(zhí)行銜接起來。而Spark則把不同的環(huán)節(jié)抽象為Stage,允許多個(gè)Stage既可以串行執(zhí)行,又可以并行執(zhí)行。

    3)任務(wù)調(diào)度中的資源過濾:

    當(dāng)Stage中某個(gè)分區(qū)的Task執(zhí)行失敗后,會(huì)重新對此Stage調(diào)度,但在重新調(diào)度的時(shí)候會(huì)過濾已經(jīng)執(zhí)行成功的分區(qū)任務(wù),所以不會(huì)造成重復(fù)計(jì)算和資源浪費(fèi)。

    4)Shuffle排序:

    Hadoop MapReduce在Shuffle之前會(huì)將中間結(jié)果按key的hash值和key值大小進(jìn)行兩層排序,確保分區(qū)內(nèi)部的有序性。而Spark則可以根據(jù)不同場景選擇在map端排序還是reduce端排序。

    5)內(nèi)存管理優(yōu)化:

    Spark將內(nèi)存分為堆上的存儲(chǔ)內(nèi)存、堆外的存儲(chǔ)內(nèi)存、堆上的執(zhí)行內(nèi)存、堆外的執(zhí)行內(nèi)存4個(gè)部分。Spark既提供了執(zhí)行內(nèi)存和存儲(chǔ)內(nèi)存之間固定邊界的實(shí)現(xiàn),又提供了執(zhí)行內(nèi)存和存儲(chǔ)內(nèi)存之間“軟”邊界的實(shí)現(xiàn)。Spark默認(rèn)使用“軟”邊界的實(shí)現(xiàn),執(zhí)行內(nèi)存或存儲(chǔ)內(nèi)存中的任意一方在資源不足時(shí)都可以借用另一方的內(nèi)存,最大限度地提高資源的利用率,減少對資源的浪費(fèi)。Spark由于對內(nèi)存使用的偏好,內(nèi)存資源的多寡和使用率就顯得尤為重要,為此Spark的內(nèi)存管理器提供的Tungsten實(shí)現(xiàn)了一種與操作系統(tǒng)的內(nèi)存Page非常相似的數(shù)據(jù)結(jié)構(gòu),用于直接操作操作系統(tǒng)內(nèi)存,節(jié)省了創(chuàng)建的Java對象在堆中占用的內(nèi)存,使得Spark對內(nèi)存的使用效率更加接近硬件。Spark會(huì)給每個(gè)Task分配一個(gè)配套的任務(wù)內(nèi)存管理器,對Task粒度的內(nèi)存進(jìn)行管理。Task的內(nèi)存可以被多個(gè)內(nèi)部的消費(fèi)者消費(fèi),任務(wù)內(nèi)存管理器對每個(gè)消費(fèi)者進(jìn)行Task內(nèi)存的分配與管理,因此Spark對內(nèi)存有著更細(xì)粒度的管理。核心技術(shù)參考我的博客https://blog.csdn.net/Peter_Changyb/article/details/81904066

    5.1 關(guān)于Spark和SparkSQL

    什么是Spark,什么是SparkSQL。Spark有的核心概念及名詞解釋。SparkSQL和Spark是什么關(guān)系,SparkSQL和Hive是什么關(guān)系。SparkSQL為什么比Hive跑的快。

    5.2 如何部署和運(yùn)行SparkSQL

    Spark有哪些部署模式?如何在Yarn上運(yùn)行SparkSQL?使用SparkSQL查詢Hive中的表。Spark不是一門短時(shí)間內(nèi)就能掌握的技術(shù),因此建議在了解了Spark之后,可以先從SparkSQL入手,循序漸進(jìn)。關(guān)于Spark和SparkSQL,如果你認(rèn)真完成了上面的學(xué)習(xí)和實(shí)踐,此時(shí),你的”大數(shù)據(jù)平臺”應(yīng)該是這樣的。

    第六單元:實(shí)時(shí)交換

    在實(shí)際業(yè)務(wù)場景下,特別是對于一些監(jiān)控日志,想即時(shí)的從日志中了解一些指標(biāo),這時(shí)候,從HDFS上分析就太慢了,盡管是通過Flume采集的,但Flume也不能間隔很短就往HDFS上滾動(dòng)文件,這樣會(huì)導(dǎo)致小文件特別多。為了滿足數(shù)據(jù)的一次采集、多次消費(fèi)的需求,這里要說的便是Kafka。

    6.1 關(guān)于Kafka

    什么是Kafka?Kafka的核心概念及名詞解釋。

    6.2 如何部署和使用Kafka

    使用單機(jī)部署Kafka,并成功運(yùn)行自帶的生產(chǎn)者和消費(fèi)者例子。使用Java程序自己編寫并運(yùn)行生產(chǎn)者和消費(fèi)者程序。Flume和Kafka的集成,使用Flume監(jiān)控日志,并將日志數(shù)據(jù)實(shí)時(shí)發(fā)送至Kafka。

    這時(shí),使用Flume采集的數(shù)據(jù),不是直接到HDFS上,而是先到Kafka,Kafka中的數(shù)據(jù)可以由多個(gè)消費(fèi)者同時(shí)消費(fèi),其中一個(gè)消費(fèi)者,就是將數(shù)據(jù)同步到HDFS。

    * 為什么Spark比MapReduce快。

    * 使用SparkSQL代替Hive,更快的運(yùn)行SQL。

    * 使用Kafka完成數(shù)據(jù)的一次收集,多次消費(fèi)架構(gòu)。

    * 自己可以寫程序完成Kafka的生產(chǎn)者和消費(fèi)者。

    第七單元:實(shí)時(shí)調(diào)度

    不僅僅是分析任務(wù),數(shù)據(jù)采集、數(shù)據(jù)交換同樣是一個(gè)個(gè)的任務(wù)。這些任務(wù)中,有的是定時(shí)觸發(fā),有點(diǎn)則需要依賴其他任務(wù)來觸發(fā)。當(dāng)平臺中有幾百上千個(gè)任務(wù)需要維護(hù)和運(yùn)行時(shí)候,僅僅靠crontab遠(yuǎn)遠(yuǎn)不夠了,這時(shí)便需要一個(gè)調(diào)度監(jiān)控系統(tǒng)來完成這件事。調(diào)度監(jiān)控系統(tǒng)是整個(gè)數(shù)據(jù)平臺的中樞系統(tǒng),類似于AppMaster,負(fù)責(zé)分配和監(jiān)控任務(wù)。

    7.1 Apache Oozie

    1. Oozie是什么?有哪些功能?當(dāng)你的系統(tǒng)引入了spark或者h(yuǎn)adoop以后,基于Spark和Hadoop已經(jīng)做了一些任務(wù),比如一連串的Map Reduce任務(wù),但是他們之間彼此右前后依賴的順序,因此你必須要等一個(gè)任務(wù)執(zhí)行成功后,再手動(dòng)執(zhí)行第二個(gè)任務(wù)。

    * Oozie是管理Hadoop作業(yè)的工作流調(diào)度系統(tǒng)

    * Oozie的工作流是一系列的操作圖,Oozie協(xié)調(diào)作業(yè)是通過時(shí)間(頻率)以及有效數(shù)據(jù)觸發(fā)當(dāng)前的Oozie工作流程

    * Oozie是針對Hadoop開發(fā)的開源工作流引擎,專門針對大規(guī)模復(fù)雜工作流程和數(shù)據(jù)管道設(shè)計(jì)

    * Oozie圍繞兩個(gè)核心:工作流和協(xié)調(diào)器,前者定義任務(wù)的拓?fù)浜蛨?zhí)行邏輯,后者負(fù)責(zé)工作流的依賴和觸發(fā)。

    2. Oozie可以調(diào)度哪些類型的任務(wù)(程序)?

    3. Oozie可以支持哪些任務(wù)觸發(fā)方式?

    4. 安裝配置Oozie。

    7.2 其他開源的任務(wù)調(diào)度系統(tǒng)

    Azkaban,light-task-scheduler,Zeus,等等。另外,我這邊是之前單獨(dú)開發(fā)的任務(wù)調(diào)度與監(jiān)控系統(tǒng)。

    第八單元:實(shí)時(shí)處理

    在介紹Kafka的時(shí)候提到了一些需要實(shí)時(shí)指標(biāo)的業(yè)務(wù)場景,實(shí)時(shí)基本可以分為絕對實(shí)時(shí)和準(zhǔn)實(shí)時(shí),絕對實(shí)時(shí)的延遲要求一般在毫秒級,準(zhǔn)實(shí)時(shí)的延遲要求一般在秒、分鐘級。對于需要絕對實(shí)時(shí)的業(yè)務(wù)場景,用的比較多的是Storm,對于其他準(zhǔn)實(shí)時(shí)的業(yè)務(wù)場景,可以是Storm,也可以是Spark Streaming。

    8.1 Storm

    1. 什么是Storm?有哪些可能的應(yīng)用場景?

    2. Storm由哪些核心組件構(gòu)成,各自擔(dān)任什么角色?

    3. Storm的簡單安裝和部署。

    4. 案例實(shí)戰(zhàn)參見我的技術(shù)博客https://blog.csdn.net/Peter_Changyb/article/details/82380603

    8.2 Spark Streaming

    1. 什么是Spark Streaming,它和Spark是什么關(guān)系?

    2. Spark Streaming和Storm比較,各有什么優(yōu)缺點(diǎn)?

    3. 使用Kafka + Spark Streaming,完成實(shí)時(shí)計(jì)算的Demo程序。

    第九單元:實(shí)時(shí)存儲(chǔ)

    HBase屬于存儲(chǔ)層,是一個(gè)高可靠性、高性能、面向列、可伸縮的分布式存儲(chǔ)系統(tǒng),可在廉價(jià)PC Server上搭建起大規(guī)模結(jié)構(gòu)化存儲(chǔ)集群。Hbase依托于很多框架和工具。其中,Hadoop HDFS為HBase提供了高可靠性的底層存儲(chǔ)支持,Hadoop MapReduce為HBase提供了高性能的計(jì)算能力,Zookeeper為HBase提供了穩(wěn)定服務(wù)和failover機(jī)制。Pig和Hive還為HBase提供了高層語言支持,使得在HBase上進(jìn)行數(shù)據(jù)統(tǒng)計(jì)處理簡單快捷。Sqoop為HBase提供了方便的RDBMS數(shù)據(jù)導(dǎo)入功能,使得傳統(tǒng)數(shù)據(jù)庫數(shù)據(jù)向HBase中遷移更靈活。

    HBase的 Client客戶端借助HBase的RPC機(jī)制與HMaster和HRegionServer進(jìn)行通信,Zookeeper Quorum中除了存儲(chǔ)了-ROOT-表的地址和HMaster的地址,HRegionServer也注冊到Zookeeper中,使得HMaster可以隨時(shí)感知到各個(gè)HRegionServer的存活狀態(tài)。HMaster解決了單點(diǎn)故障問題,HBase中可以啟動(dòng)多個(gè)HMaster,通過Zookeeper的Master Election機(jī)制保證總有一個(gè)Master運(yùn)行,HMaster在功能上主要負(fù)責(zé)Table和Region的管理工作,包括管理用戶對Table的增、刪、改、查操作,管理HRegionServer的負(fù)載均衡,調(diào)整Region分布,在Region Split后負(fù)責(zé)新Region的分配,在HRegionServer停機(jī)后負(fù)責(zé)失效HRegionServer 上的Regions遷移。

    HRegionServer職責(zé)是負(fù)責(zé)響應(yīng)用戶I/O請求,向HDFS文件系統(tǒng)中讀寫數(shù)據(jù),屬于HBase中最核心的模塊。它內(nèi)部管理了一系列HRegion對象,每個(gè)HRegion對應(yīng)了Table中的一個(gè)Region,HRegion中由多個(gè)HStore組成。每個(gè)HStore對應(yīng)了Table中的一個(gè)Column Family的存儲(chǔ),每個(gè)Column Family就是一個(gè)集中的存儲(chǔ)單元,設(shè)計(jì)師最好將具備共同IO特性的column放在一個(gè)Column Family中,一般來說,我們只設(shè)置一個(gè)Column Family。HStore存儲(chǔ)是HBase存儲(chǔ)的核心,其中由兩部分組成,一是MemStore,二是StoreFiles。MemStore是Sorted Memory Buffer,用戶寫入的數(shù)據(jù)首先會(huì)放入MemStore,當(dāng)MemStore滿了以后會(huì)Flush成一個(gè)StoreFile(底層實(shí)現(xiàn)是HFile),當(dāng)StoreFile文件數(shù)量增長到一定閾值,會(huì)觸發(fā)Compact合并操作,將多個(gè)StoreFiles合并成一個(gè)StoreFile,合并過程中會(huì)進(jìn)行版本合并和數(shù)據(jù)刪除,所以HBase其實(shí)只有增加數(shù)據(jù),所有的更新和刪除操作都是在后續(xù)的compact過程中進(jìn)行的,這使得用戶的寫操作只要進(jìn)入內(nèi)存中就可以立即返回,保證了HBase I/O的高性能。

    第十單元:智能分析

    機(jī)器學(xué)習(xí)核心技術(shù)參見我的技術(shù)博客https://blog.csdn.net/Peter_Changyb/article/details/82347169。常用的機(jī)器學(xué)習(xí)解決的問題有三類:

    * 分類問題:

    包括二分類和多分類,二分類就是解決了預(yù)測的問題,就像預(yù)測一封郵件是否垃圾郵件;多分類解決的是文本的分類;

    * 聚類問題:

    從用戶搜索過的關(guān)鍵詞,對用戶進(jìn)行大概的歸類。

    * 推薦問題:

    根據(jù)用戶的歷史瀏覽和點(diǎn)擊行為進(jìn)行相關(guān)推薦。

    經(jīng)驗(yàn)分享

    總之,對商用大數(shù)據(jù)平臺而言,我們要考慮應(yīng)用場景,用戶規(guī)模和數(shù)據(jù)處理能力,以及未來3年的目標(biāo)等。在應(yīng)用場景的設(shè)計(jì)中,會(huì)考慮業(yè)務(wù)和技術(shù)的結(jié)合度量,業(yè)務(wù)的規(guī)模和流程設(shè)計(jì)。用戶規(guī)模和數(shù)據(jù)處理能力,會(huì)考慮技術(shù)選型和架構(gòu)設(shè)計(jì)。具體要考慮架構(gòu)設(shè)計(jì)。架構(gòu)中重要的核心指標(biāo):性能、可用性、伸縮性、擴(kuò)展性的等。

    一、性能

    性能就是核心要素之一,具體如下:

    * CDN加速

    * 反向代理

    * 分布式緩存

    * 異步化:

    通過分布式消息隊(duì)列來實(shí)現(xiàn)削峰的目的。通過業(yè)務(wù)配合技術(shù)來解決問題。

    * 集群:

    采用集群也是服務(wù)虛擬化的一個(gè)體現(xiàn)。用以避免單點(diǎn)問題,同時(shí)提供更加高可用,高性能的服務(wù)。

    * 代碼優(yōu)化:

    多線程中,如果是密集型計(jì)算,線程數(shù)不宜超過CPU核數(shù)。如果是IO處理,則線程數(shù)=[任務(wù)執(zhí)行時(shí)間/(任務(wù)執(zhí)行時(shí)間-IO等待時(shí)間)] * CPU核數(shù)。除此之外,我們應(yīng)該將對象設(shè)計(jì)成無狀態(tài)對象,多采用局部對象,適當(dāng)將鎖細(xì)化。進(jìn)行資源復(fù)用。比如采用單例模式,比如采用連接池。合理設(shè)置JVM參數(shù)。

    * 存儲(chǔ)性能優(yōu)化:

    關(guān)系型數(shù)據(jù)庫的索引采用B+樹進(jìn)行實(shí)現(xiàn)。而很多的nosql數(shù)據(jù)庫則采用了LSM樹進(jìn)行存儲(chǔ)。LSM在內(nèi)存中保留最新增刪改查的數(shù)據(jù),直到內(nèi)存無法放下,則與磁盤的下一級LSM樹進(jìn)行merge。所以對于寫操作較多,而讀操作更多的是查詢最近寫入數(shù)據(jù)的場景,其性能遠(yuǎn)高于b+樹;采用HDFS結(jié)合map reduce進(jìn)行海量數(shù)據(jù)存儲(chǔ)和分析。其能自動(dòng)進(jìn)行并發(fā)訪問和冗余備份,具有很高的可靠性。其等于是實(shí)現(xiàn)了RAID的功能。

    * 數(shù)據(jù)訪問接口優(yōu)化:

    數(shù)據(jù)庫層其實(shí)是最脆弱的一層,一般在應(yīng)用設(shè)計(jì)時(shí)在上游就需要把請求攔截掉,數(shù)據(jù)庫層只承擔(dān)“能力范圍內(nèi)”的訪問請求,所以,我們通過在服務(wù)層引入隊(duì)列和緩存,讓最底層的數(shù)據(jù)庫高枕無憂。

    二、高可用性

    衡量一個(gè)系統(tǒng)架構(gòu)設(shè)計(jì)是否滿足高可用的目標(biāo),就是假設(shè)系統(tǒng)中任何一臺或者多臺服務(wù)器宕機(jī)時(shí),以及出現(xiàn)各種不可預(yù)期的問題時(shí),系統(tǒng)整體是否依然可用。一般就三個(gè)手段、冗余、集群化、分布式。高可用的主要手段就是冗余,應(yīng)用部署在多臺服務(wù)器上同時(shí)提供服務(wù),數(shù)據(jù)存儲(chǔ)在多臺服務(wù)器上相互備份。安全服務(wù)是指計(jì)算機(jī)網(wǎng)絡(luò)提供的安全防護(hù)措施,包括認(rèn)證服務(wù)、訪問控制、數(shù)據(jù)機(jī)密性服務(wù)、數(shù)據(jù)完整性服務(wù)和不可否認(rèn)服務(wù)。特定的安全機(jī)制是用來實(shí)施安全服務(wù)的機(jī)制,包括加密機(jī)制、數(shù)據(jù)簽名機(jī)制、訪問控制機(jī)制、數(shù)據(jù)完整性機(jī)制、認(rèn)證交換機(jī)制、流量填充機(jī)制、路由控制機(jī)制和公證機(jī)制。普遍性的安全機(jī)制不是為任何特定的服務(wù)而特設(shè)的,屬于安全管理方面,分為可信功能度、安全標(biāo)記、事件檢測、安全審計(jì)跟蹤和安全恢復(fù)。

    三、高擴(kuò)展性

    擴(kuò)展性指對現(xiàn)有系統(tǒng)影響最小的情況下,系統(tǒng)功能可持續(xù)擴(kuò)展或提升的能力。表現(xiàn)在系統(tǒng)基礎(chǔ)設(shè)施穩(wěn)定不需要經(jīng)常變更,應(yīng)用之間較少依賴和耦合,當(dāng)系統(tǒng)增加新功能時(shí),不需要對現(xiàn)有系統(tǒng)的結(jié)構(gòu)和代碼進(jìn)行修改。擴(kuò)展性依賴于前期良好的架構(gòu)設(shè)計(jì)。合理業(yè)務(wù)邏輯抽象,水平/垂直切割分布式化等等??蓴U(kuò)展架構(gòu)的主要手段是事件驅(qū)動(dòng)架構(gòu)和分布式服務(wù)。事件驅(qū)動(dòng)通常利用消息隊(duì)列實(shí)現(xiàn),通過這種方式將消息生產(chǎn)和處理邏輯分隔開。服務(wù)器服務(wù)則是將業(yè)務(wù)和可復(fù)用服務(wù)分離開來,通過分布式服務(wù)框架調(diào)用。新增加產(chǎn)品可用通過調(diào)用可復(fù)用的服務(wù)來實(shí)現(xiàn)自身的業(yè)務(wù)邏輯,而對現(xiàn)有產(chǎn)品沒有任何影響。

    四、高伸縮性

    服務(wù)盡量同構(gòu)。DB、cache在考慮分布式時(shí)盡量提前設(shè)計(jì)好擴(kuò)展方案。也可以采用一些主流的對水平伸縮支持較好的nosql、memcached、hbase等。

    極客網(wǎng)企業(yè)會(huì)員

    免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請進(jìn)一步核實(shí),并對任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書面權(quán)利通知或不實(shí)情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。

    2019-03-26
    中國移動(dòng)研究院常耀斌:商用大數(shù)據(jù)平臺的研發(fā)之路
    中國移動(dòng)研究院常耀斌:商用大數(shù)據(jù)平臺的研發(fā)之路,我是中國移動(dòng)研究院的資深架構(gòu)師常耀斌。2007年,我加入中國電科,參與并主導(dǎo)設(shè)計(jì)的全軍一體化指揮作戰(zhàn)

    長按掃碼 閱讀全文