云计算论文集, Spark, 数据描述语言, 运维工具集
https://antkillerfarm.github.io/
云計算論文集
這里列出一些在這個領域產生重大影響的論文。僅作備忘,肯定不全,Google是其中的絕對主力。
CAP
《Towards Robust Distributed Systems》(2000)
作者:Eric Brewer是University of California, Berkeley的計算機科學教授,在Google擔任基礎設施方面的VP。他的研究興趣包括云計算、可伸縮的服務器、傳感器網絡,還有適合發展中地區應用的技術。他還幫助建立了美國聯邦政府的門戶網站USA.gov。Brewer從MIT獲得電子工程和計算機科學的博士學位。他是National Academy of Engineering的院士。
GFS
《The Google File System》(2003)
開源實現:Hadoop HDFS
作者:Sanjay Ghemawat,Ph.D. in Computer Science from MIT,2009年當選美國國家工程學院院士。
Howard Gobioff(1971 – 2008),Carnegie Mellon University,Ph.D. Computer Science。
Shun-Tak Leung,University of Washington,Ph.D. Computer Science。
MapReduce
《MapReduce: Simplified Data Processing on Large Clusters》(2004)
開源實現:Hadoop MapReduce
作者:Jeffrey Dean,University of Washington,Ph.D. Computer Science (1996),2009年當選美國國家工程學院院士。
Sanjay Ghemawat。
Bigtable
開源實現:Hbase
《Bigtable: A Distributed Storage System for Structured Data》(2006)
作者:Fay W. Chang,Carnegie Mellon University,Ph.D. Computer Science 。
Jeffrey Dean, Sanjay Ghemawat, Wilson C. Hsieh, Deborah A. Wallach, Mike Burrows, Tushar Chandra, Andrew Fikes, Robert E. Gruber
Spanner
《Spanner: Google’s Globally-Distributed Database》(2012)
作者:James C. Corbett,PhD in Computer Science from the University of Massachusetts at Amherst.
Jeffrey Dean, Michael Epstein, Andrew Fikes, Christopher Frost, JJ Furman, Sanjay Ghemawat, Andrey Gubarev, Christopher Heiser, Peter Hochschild, Wilson Hsieh,Sebastian Kanthak, Eugene Kogan, Hongyi Li, Alexander Lloyd, Sergey Melnik, David Mwaura,David Nagle, Sean Quinlan, Rajesh Rao, Lindsay Rolig, Yasushi Saito, Michal Szymaniak,Christopher Taylor, Ruth Wang, Dale Woodford
Dremel
Dremel是Google的“交互式”數據分析系統。可以組建成規模上千的集群,處理PB級別的數據,是MapReduce的有力補充。
《Dremel: Interactive Analysis of WebScaleDatasets》(2006)
作者:Sergey Melnik, Ph.D. in Computer Science from the University of Leipzig, Germany. Microsoft Research (2003-2008), Google(since 2008)
Andrey Gubarev, Jing Jing Long, Geoffrey Romer, Shiva Shivakumar, Matt Tolton, Theo Vassilakis
Chubby Lock
《The Chubby lock service for loosely-coupled distributed systems》(2006)
開源實現:Zookeeper
作者:Mike Burrows,1963年生,英國計算機學家。劍橋大學博士。2013年當選皇家學會會員。
Spark
官網:
http://spark.apache.org/
RDD
Resilient Distributed Datasets是一個只讀的,可分區的分布式數據集,這個數據集的全部或部分可以緩存在內存中,在多次計算間重用。RDD克服了傳統的MapReduce所進行大量的磁盤IO操作。
我的理解:RDD將計算包括中間結果,全部放到內存中,以節省磁盤IO操作。
http://www.infoq.com/cn/articles/spark-core-rdd
http://f.dataguru.cn/thread-475874-1-1.html
DataFrame和DataSet
http://www.jianshu.com/p/c0181667daa0
http://www.csdn.net/article/2015-02-17/2823997
https://www.iteblog.com/pdf/1675
transformation & action
transformation是得到一個新的RDD,方式很多,比如從數據源生成一個新的RDD,從RDD生成一個新的RDD。
action是得到一個值,或者一個結果(直接將RDDcache到內存中)。
所有的transformation都是采用的懶策略,就是如果只是將transformation提交是不會執行計算的,計算只有在action被提交的時候才被觸發。
Spark部署
Spark沒有服務程序,因此無須部署,只需要在集群中的某臺機器上安裝spark,進行任務提交即可。Spark的并行執行主要依賴Hadoop YARN。
參見:
http://blog.csdn.net/book_mmicky/article/details/25714287
Spark雖然對Hadoop的版本有一定的要求,但是并不是太嚴重的問題。比如,目前最新的Spark 2.0.1(2016.10)仍然支持Hadoop 2.3,而后者是2014年2月出的版本。
shuffle
上圖描述了MapReduce算法的整個流程,其中shuffle phase就是介于Map phase和Reduce phase之間的那一堆連線。很顯然,shuffle雖然是MapReduce算法提出的概念,但在各類分布式計算框架中普遍存在,也是影響計算效率的關鍵點和框架設計的難點之一。
參考:
http://jerryshao.me/architecture/2014/01/04/spark-shuffle-detail-investigation/
控制日志輸出等級
有的時候為了防止控制臺的日志輸出過多,淹沒了程序的正常輸出,可以采用如下方法:
SparkContext sc = SparkContext.getOrCreate(conf); sc.setLogLevel("WARN");基本統計操作
1.統計列中不相同值的個數。
方法一:
比如在觀眾觀影的表格中,找出觀眾的數量或電影的數量。
Dataset<Row> df = session.sql("SELECT userId FROM Movie group by userId");//df.count() is the count of different values
方法二:
Spark中有個org.apache.spark.sql.functions類,專門針對數據集進行各種運算操作。其中的countDistinct方法可實現該功能。片段示例如下:
Dataset<Row> df2 = df.agg(functions.countDistinct("userId"));df2.show();
參考
http://www.cnblogs.com/zlslch/p/5723857.html
Spark的各種算子
http://mp.weixin.qq.com/s?__biz=MjM5NzAyNTE0Ng==&mid=2649517135&idx=2&sn=7fc02a006b7c5015f3492354d0e298a4&scene=0#rd
Spark性能優化指南:高級篇
https://www.zhihu.com/question/23079001
內存有限的情況下,Spark如何處理T級別的數據
https://www.zhihu.com/question/26568496
與Hadoop對比,如何看待Spark技術?
http://www.csdn.net/article/1970-01-01/2825748
如何利用“圖計算”實現大規模實時預測分析
http://www.cnblogs.com/bluejoe/p/5115846.html
學習GraphX
http://www.cnblogs.com/bluejoe/p/5115845.html
Hive體系結構介紹
數據描述語言
JSON
JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。 易于人閱讀和編寫。同時也易于機器解析和生成。 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一個子集。
其官網為:
http://json.org/
官網上列出了各種語言的JSON解析庫。其中C語言的解析庫中以json-c最為流行,其官網為:
https://github.com/json-c/json-c
和XML Path類似,JSON也定義了自己的JSON Path。參見:
http://goessner.net/articles/JsonPath/
參考:
https://addons.mozilla.org/zh-CN/firefox/addon/jsonview/
jsonview是一個用于檢驗JSON格式是否合法的Firefox插件。
http://www.bejson.com/
一個在線驗證JSON語法的庫。
Jackson
Jackson是常用的Java語言的JSON庫。
Maven安裝:
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.6.4</version> </dependency>Jackson提供了三種處理方法:
流式API:(也稱為”增量分析/生成”)讀取和寫入 JSON 內容作為離散事件。類似于XML SAX。
com.fasterxml.jackson.JsonParser讀,com.fasterxml.jackson.JsonGenerator寫。
樹模型:提供一個JSON文檔可變內存樹的表示形式。類似于XML DOM。
com.fasterxml.jackson.databind.ObjectMapper生成樹;樹組成JsonNode節點集。
數據綁定:JSON和POJO相互轉換,基于屬性訪問器規約或注解。
Jackson不支持JSON Path,可以使用以下項目:
https://github.com/jayway/JsonPath
這個項目的后端可以選擇Jackson或Gson。
BSON
Binary JSON是在JSON的基礎上,添加了索引及數據類型的一種二進制格式。相比JSON,它犧牲了可閱讀性,得到了可遍歷性和高效性。
BSON最早由MongoDB項目提出并使用,它的官網為:
http://bsonspec.org/
從中可以看出大多數語言的BSON解析庫,都是MongoDB項目提供的。
YAML
YAML(Yet Another Markup Language)是JSON的超集。它沒有JSON那么流行,主要被用于科學計算領域,比如OpenCV項目。它的官網為:
http://yaml.org/
這個網站很有特色,它本身就是一個YAML文件。
Protocol Buffers
Protocol Buffers是Google公司開發的一種數據描述語言。它的官網為:
https://github.com/google/protobuf
這是一種注重效率,而可閱讀性幾乎為零的二進制格式。其效率超過BSON,但除非有相關格式文件,否則完全無法閱讀。而BSON作為JSON的擴展,只有擴展的那部分不可讀,其余部分仍保留JSON的可讀性。
格式文件是Protocol Buffers中的重要概念,也是和JSON等格式在使用思路上最大的區別。
JSON采用的是,不同的語言提供不同的庫來解析的方式。
而Protocol Buffers使用同一個格式文件,為不同語言生成相應的代碼。這和CORBA的做法很類似。
與Protocol Buffers類似的方案,還有Facebook提出的Thrift、ZeroC提出的Slice和Hadoop Avro。
運維工具集
Zabbix
zabbix是一個基于WEB界面的提供分布式系統監視以及網絡監視功能的企業級的開源解決方案。
http://www.zabbix.com/
Cacti
Cacti是一套基于PHP,MySQL,SNMP及RRDTool開發的網絡流量監測圖形分析工具。
http://cacti.net/
Nagios
Nagios是一款開源的免費網絡監視工具,能有效監控Windows、Linux和Unix的主機狀態,交換機路由器等網絡設備,打印機等。
https://www.nagios.org/
Ganglia
Ganglia是伯克利開發的一個集群監控軟件。可以監視和顯示集群中的節點的各種狀態信息,比如如:cpu 、mem、硬盤利用率, I/O負載、網絡流量情況等,同時可以將歷史數據以曲線方式通過php頁面呈現。
官網:
http://ganglia.sourceforge.net/
Jenkins
Jenkins是一個開源軟件項目,旨在提供一個開放易用的軟件平臺,使軟件的持續集成變成可能。
https://jenkins.io/index.html
自動化部署的其中一種方案:
gitlab管理代碼版本,觸發jenkins自動構建+測試,然后走迭代或者發布,全部環境都在docker內。
Walle
Walle一個web部署系統工具,配置簡單、功能完善、界面流暢、開箱即用!支持git、svn版本管理,支持各種web代碼發布,PHP,Python,JAVA等代碼的發布、回滾,可以通過web來一鍵完成。
https://walle-web.io/
JMeter
Apache JMeter是Apache組織開發的基于Java的壓力測試工具。用于對軟件做壓力測試,它最初被設計用于Web應用測試,但后來擴展到其他測試領域。 它可以用于測試靜態和動態資源,例如靜態文件、Java 小服務程序、CGI 腳本、Java 對象、數據庫、FTP 服務器, 等等。JMeter 可以用于對服務器、網絡或對象模擬巨大的負載,來自不同壓力類別下測試它們的強度和分析整體性能。
http://jmeter.apache.org/
總結
以上是生活随笔為你收集整理的云计算论文集, Spark, 数据描述语言, 运维工具集的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hadoop, Hbase
- 下一篇: Java构建工具, ZeroC ICE,