成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

大數(shù)據(jù)
我是中國移動研究院的資深架構(gòu)師常耀斌。今天有幸分享商用大數(shù)據(jù)平臺研發(fā)經(jīng)驗,讓大數(shù)據(jù)知識圖譜在各位的腦海里轉(zhuǎn)起來,并形成商用產(chǎn)品的作戰(zhàn)體系,這是“作為架構(gòu)師,何謂正確?”的行動基礎(chǔ)。我分享四大部分:知識分類,系統(tǒng)架構(gòu),核心技術(shù),經(jīng)驗分享。

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

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

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

* 文件存儲:

Hadoop HDFS、Tachyon、KFS

* 離線計算:

Hadoop MapReduce、Spark

* 流式、實時計算:

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ù)挖掘、機器學習:

Mahout、Spark MLLib

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

Sqoop

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

Oozie

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

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

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

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

基礎(chǔ)架構(gòu)-Hadoop的破冰之旅

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

* 高可靠性。

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

* 高擴展性。

Hadoop是在可用的計算機集簇間分配數(shù)據(jù)并完成計算任務(wù)的,這些集簇可以方便地擴展到數(shù)以千計的節(jié)點中。

* 高效性。

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

* 高容錯性。

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

Hadoop可以算是大數(shù)據(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目錄操作命令;上傳、下載文件命令;提交運行MapReduce示例程序;打開Hadoop WEB界面,查看Job運行狀態(tài),查看Job運行日志。知道Hadoop的系統(tǒng)日志在哪里。

1.2 了解并行計算的核心原理

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

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

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ù)庫,邏輯上倉庫。有兩個特點:海量數(shù)據(jù)、相對穩(wěn)定的;相對穩(wěn)定,指很少會被更新和刪除,只會被大量查詢。而Hive,也是具備這兩個特點,因此,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ù)的流程;
  • 學會查看日志解決問題;
  • 會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命令在實際環(huán)境中也比較常用,通常配合shell、python等腳本語言來使用。

3.2 HDFS API調(diào)用

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

3.3 Sqoop遷移工具

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

3.4 Flume分布式采集框架

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

第四單元:離線同步

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

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

第五單元:實時計算

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

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

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

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

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

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

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

4)Shuffle排序:

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

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

Spark將內(nèi)存分為堆上的存儲內(nèi)存、堆外的存儲內(nèi)存、堆上的執(zhí)行內(nèi)存、堆外的執(zhí)行內(nèi)存4個部分。Spark既提供了執(zhí)行內(nèi)存和存儲內(nèi)存之間固定邊界的實現(xiàn),又提供了執(zhí)行內(nèi)存和存儲內(nèi)存之間“軟”邊界的實現(xiàn)。Spark默認使用“軟”邊界的實現(xiàn),執(zhí)行內(nèi)存或存儲內(nèi)存中的任意一方在資源不足時都可以借用另一方的內(nèi)存,盡可能地提高資源的利用率,減少對資源的浪費。Spark由于對內(nèi)存使用的偏好,內(nèi)存資源的多寡和使用率就顯得尤為重要,為此Spark的內(nèi)存管理器提供的Tungsten實現(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會給每個Task分配一個配套的任務(wù)內(nèi)存管理器,對Task粒度的內(nèi)存進行管理。Task的內(nèi)存可以被多個內(nèi)部的消費者消費,任務(wù)內(nèi)存管理器對每個消費者進行Task內(nèi)存的分配與管理,因此Spark對內(nèi)存有著更細粒度的管理。核心技術(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 如何部署和運行SparkSQL

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

第六單元:實時交換

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

6.1 關(guān)于Kafka

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

6.2 如何部署和使用Kafka

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

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

  1. 為什么Spark比MapReduce快。
  2. 使用SparkSQL代替Hive,更快的運行SQL。
  3. 使用Kafka完成數(shù)據(jù)的一次收集,多次消費架構(gòu)。
  4. 自己可以寫程序完成Kafka的生產(chǎn)者和消費者。

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

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

7.1 Apache Oozie

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

  • * Oozie是管理Hadoop作業(yè)的工作流調(diào)度系統(tǒng)
  • * Oozie的工作流是一系列的操作圖,Oozie協(xié)調(diào)作業(yè)是通過時間(頻率)以及有效數(shù)據(jù)觸發(fā)當前的Oozie工作流程
  • * Oozie是針對Hadoop開發(fā)的開源工作流引擎,專門針對大規(guī)模復(fù)雜工作流程和數(shù)據(jù)管道設(shè)計
  • * Oozie圍繞兩個核心:工作流和協(xié)調(diào)器,前者定義任務(wù)的拓撲和執(zhí)行邏輯,后者負責工作流的依賴和觸發(fā)。

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

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

4. 安裝配置Oozie。

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

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

第八單元:實時處理

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

8.1 Storm

  1. 什么是Storm?有哪些可能的應(yīng)用場景?
  2. Storm由哪些核心組件構(gòu)成,各自擔任什么角色?
  3. Storm的簡單安裝和部署。
  4. 案例實戰(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)缺點?
  3.  使用Kafka + Spark Streaming,完成實時計算的Demo程序。

第九單元:實時存儲

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

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

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

第十單元:智能分析

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

* 分類問題:

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

* 聚類問題:

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

* 推薦問題:

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

04 經(jīng)驗分享

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

一、性能

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

  • * CDN加速
  • * 反向代理
  • * 分布式緩存

* 異步化:

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

* 集群:

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

* 代碼優(yōu)化:

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

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

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

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

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

二、高可用性

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

三、高擴展性

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

四、高伸縮性

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

【本文為51CTO專欄作者“移動Labs”原創(chuàng)稿件,轉(zhuǎn)載請聯(lián)系原作者】

戳這里,看該作者更多好文

 

責任編輯:未麗燕 來源: 移動Labs
相關(guān)推薦

2019-03-29 10:00:12

AI 數(shù)據(jù)人工智能

2019-04-24 16:32:52

人工智能深度學習框架

2019-07-11 15:02:34

邊緣云云計算云環(huán)境

2013-04-28 09:22:55

中移動5G4G

2009-07-28 16:38:47

TCAT華為中國移動

2019-05-22 14:46:24

中國移動SPN5G傳輸

2009-03-13 10:14:47

中移動人才標準招聘

2022-10-19 17:09:42

移動數(shù)據(jù)開發(fā)

2012-11-14 10:38:42

中國移動4GTD-LED

2014-04-24 16:10:00

2021-03-02 10:28:48

5G運營商網(wǎng)絡(luò)

2014-02-26 13:15:52

中國移動NGMN5G

2017-12-25 10:54:05

2012-11-14 09:40:57

NFC

2012-11-14 10:42:13

中國移動NFC

2015-04-17 14:56:47

海云捷迅OpenStack

2017-12-26 15:59:10

云計算
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国产精品美女久久久久久久久久久 | 国产成人叼嘿视频在线观看 | 久久亚洲综合 | 日本黄色免费大片 | 国产精品美女久久久久aⅴ国产馆 | 青青草在线播放 | 黑人精品xxx一区一二区 | 欧美中文一区 | 日韩精品 电影一区 亚洲 | 久久久久久女 | www亚洲一区 | 欧美一级电影免费 | 亚洲一区二区三区视频免费观看 | 国产精品永久免费视频 | 欧美人成在线视频 | av一区二区在线观看 | 国内在线视频 | 色婷婷一区二区三区四区 | www..com18午夜观看 | 黄视频免费 | 91av视频在线观看 | 美女一区二区在线观看 | 国产日韩精品一区 | www.操.com | 欧美日产国产成人免费图片 | www.天天操 | 7799精品视频天天看 | 午夜视频在线免费观看 | 亚洲视频一 | 日本精品在线观看 | 很黄很污的网站 | 草久在线视频 | 欧美一区二区三区在线看 | 精品国产99 | 一二区成人影院电影网 | 91精品国产日韩91久久久久久 | 一区二区亚洲 | 播放一级毛片 | 欧美精品在线一区 | 欧美成人hd | 91在线资源 |