開源分佈式框架有哪些?
現在主流開源分佈式系統架構都有哪些
分佈式系統是一個非常廣泛的概念,它最終要落實到解決實際問題上,不同的問題有不同的方法和架構。所有的開源軟件都是以某個應用場景出現,而純粹以“分佈式”概念進行劃分的比較少見。
但如果以算法劃分,到能分出幾類:
1.以Leader選舉為主的一類算法,比如paxos、viewstamp,就是現在zookeeper、Chuby等工具的主體
2.以分佈式事務為主的一類主要是二段提交,這些分佈式數據庫管理器及數據庫都支持
3.以若一致性為主的,主要代表是Cassandra的W、R、N可調節的一致性
現在主流開源分佈式系統架構都有哪些?
高性能rpc服務框架,zookeeper服務註冊和發現,配置中心這幾個是重點,其他的比如MQ和緩存服務
現在主流開源分佈式系統架構都有哪些
高性能rpc服務框架,zookeeper服務註冊和發現,配置中心這幾個是重點,其他的比如MQ和緩存服務
現在主流開源分佈式系統架構都有哪些
高性能rpc服務框架,zookeeper服務註冊和發現,配置中心這幾個是重點,其他的比如MQ和緩存服務
開源爬蟲框架各有什麼優缺點
開發網絡爬蟲應該選擇Nutch、Crawler4j、WebMagic、scrapy、WebCollector還是其他的?這裡按照我的經驗隨便扯淡一下:上面說的爬蟲,基本可以分3類:1.分佈式爬蟲:Nutch
2.JAVA單機爬蟲:Crawler4j、WebMagic、WebCollector
3. 非JAVA單機爬蟲:scrapy
第一類:分佈式爬蟲
爬蟲使用分佈式,主要是解決兩個問題:
1)海量URL管理
2)網速
現在比較流行的分佈式爬蟲,是Apache的Nutch。但是對於大多數用戶來說,Nutch是這幾類爬蟲裡,最不好的選擇,理由如下:
1)Nutch是為搜索引擎設計的爬蟲,大多數用戶是需要一個做精準數據爬取(精抽取)的爬蟲。Nutch運行的一套流程裡,有三分之二是為了搜索引擎而設計的。對精抽取沒有太大的意義。也就是說,用Nutch做數據抽取,會浪費很多的時間在不必要的計算上。而且如果你試圖通過對Nutch進行二次開發,來使得它適用於精抽取的業務,基本上就要破壞Nutch的框架,把Nutch改的面目全非,有修改Nutch的能力,真的不如自己重新寫一個分佈式爬蟲框架了。
2)Nutch依賴hadoop運行,hadoop本身會消耗很多的時間。如果集群機器數量較少,爬取速度反而不如單機爬蟲快。
3)Nutch雖然有一套插件機制,而且作為亮點宣傳。可以看到一些開源的Nutch插件,提供精抽取的功能。但是開發過Nutch插件的人都知道,Nutch的插件系統有多蹩腳。利用反射的機制來加載和調用插件,使得程序的編寫和調試都變得異常困難,更別說在上面開發一套複雜的精抽取系統了。而且Nutch並沒有為精抽取提供相應的插件掛載點。Nutch的插件有隻有五六個掛載點,而這五六個掛載點都是為了搜索引擎服務的,並沒有為精抽取提供掛載點。大多數Nutch的精抽取插件,都是掛載在“頁面解析”(parser)這個掛載點的,這個掛載點其實是為了解析鏈接(為後續爬取提供URL),以及為搜索引擎提供一些易抽取的網頁信息(網頁的meta信息、text文本)。
4)用Nutch進行爬蟲的二次開發,爬蟲的編寫和調試所需的時間,往往是單機爬蟲所需的十倍時間不止。瞭解Nutch源碼的學習成本很高,何況是要讓一個團隊的人都讀懂Nutch源碼。調試過程中會出現除程序本身之外的各種問題(hadoop的問題、hbase的問題)。
5)很多人說Nutch2有gora,可以持久化數據到avro文件、hbase、mysql等。很多人其實理解錯了,這裡說的持久化數據,是指將URL信息(URL管理所需要的數據)存放到avro、hbase、mysql。並不是你要抽取的結構化數據。其實對大多數人來說,URL信息存在哪裡無所謂。
6)Nutch2的版本目前並不適合開發。官方現在穩定的Nutch版本是nutch2.2.1,但是這個版本綁定了gora-0.3。如果想用hbase配合nutch(大多數人用nutch2就是為了用hbase),只能使用0.90版本左右的hbase,相應的就要將hadoop版本降到hadoop 0.2左右。而且nutch2的官方教程比較有誤導作用,Nutch2的教程有兩個,分別是Nutch1.x和Nutch2.x,這個Nutch2.x官網上寫的是可以支持到hbase 0.94。但是實際上,這個Nutch2.x的意思是Nutch2.3之前、Nutch2.2.1之後的一個版本,這個版本在官方的SVN中不斷更新。而且非常不穩定(一直在修改......
除了Hadoop 還有哪些分佈式計算平臺?優勢各自是什麼
您好,很高興為您解答。
1:MapReduce(MR),最為general和流行的一個分佈式計算框架,其開源實現Hadoop已經得到了極為廣泛的運用(Facebook, Yahoo!等等),同時在Hadoop基礎上發展起來的項目也有很多(Hive是發展最好的),另外像Cloudera,Hortonworks,MapR這樣的在Hadoop基礎上發展起來的公司也有很多。
2:Pregel,和MR一樣也是Google發明的,其優勢是在完成一些適合於抽象為圖算法的應用的計算時可以更為高效,Giraph可以算是一個比較好的發展中的開源實現。
3:Storm,Twitter的項目,號稱Hadoop的實時計算平臺,對於一些需要real time performance的job可以擁有比MR更高的效率。
4:Spark,UC Berkeley AMPLab的項目,其很好地利用了JVM中的heap,對於中間計算結果可以有更好的緩存支持,因此其在performance上要比MR高出很多。Shark是其基礎上類似於Hive的一個項目。
5:Dryad和Scope,都是MR(Microsoft Research)的項目,從paper上來看Dryad是一個更為general purpose的計算框架,在vertices裡實現計算,通過channels實現communication,兩者組成一個graph workflow;而Scope有點類似於Hive和Shark,都是將某種類似於SQL的script language編譯成可以在底層分佈式平臺上計算的job。但是這兩個項目因為不開源,所以資料不多,也沒有開源項目那樣的community。
當然還有其他很多,比如Google的Dremel,Yale的HadoopDB(現在已經商業化叫做Hadapt)。
如若滿意,請點擊右側【採納答案】,如若還有問題,請點擊【追問】
希望我的回答對您有所幫助,望採納!
~ O(∩_∩)O~
哪些深度學習開源框架支持分佈式計算
深度學習的概念源於人工神經網絡的研究。含多隱層的多層感知器就是一種深度學習結構。深度學習通過組合低層特徵形成更加抽象的高層表示屬性類別或特徵,以發現數據的分佈式特徵表示
有哪些開源的分佈式爬蟲解決方案
從GitHub中整理出的15個最受歡迎的Python開源框架。這些框架包括事件I/O,OLAP,Web開發,高性能網絡通信,測試,爬蟲等。 Django: Python Web應用開發框架 Django 應該是最出名的Python框架,GAE甚至Erlang都有框架受它影響。Django是走大而全...
大數據分析的框架有哪些,各自有什麼特點
主流的大數據分析平臺構架
1 Hadoop
Hadoop 採用 Map Reduce 分佈式計算框架,根據 GFS開發了 HDFS 分佈式文件系統,根據 Big Table 開發了 HBase數據存儲系統。Hadoop 的開源特性使其成為分佈式計算系統的事實上的國際標準。Yahoo,Facebook,Amazon 以及國內的百度,阿里巴巴等眾多互聯網公司都以 Hadoop 為基礎搭建自己的分佈。
2 Spark
Spark 是在 Hadoop 的基礎上進行了一些架構上的改良。Spark 與Hadoop 最大的不同點在於,Hadoop 使用硬盤來存儲數據,而Spark 使用內存來存儲數據,因此 Spark 可以提供超過 Ha?doop 100 倍的運算速度。由於內存斷電後會丟失數據,Spark不能用於處理需要長期保存的數據。
3 Storm
Storm是 Twitter 主推的分佈式計算系統。它在Hadoop的基礎上提供了實時運算的特性,可以實時的處理大數據流。不同於Hadoop和Spark,Storm不進行數據的收集和存儲工作,它直接通過網絡實時的接受數據並且實時的處理數據,然後直接通過網絡實時的傳回結果。
4Samza
Samza 是由 Linked In 開源的一項技術,是一個分佈式流處理框架,專用於實時數據的處理,非常像Twitter的流處理系統Storm。不同的是Sam?za 基於 Hadoop,而且使用了 Linked In 自家的 Kafka 分佈式消息系統。
Samza 非常適用於實時流數據處理的業務,如數據跟蹤、日誌服務、實時服務等應用,它能夠幫助開發者進行高速消息處理,同時還具有良好的容錯能力。
曲線圖 有哪些開源框架
什麼應用才對應什麼所謂框架。你寫個遊戲用J2EE的框架試試。或者你寫個搜索引擎用遊戲引擎試試。沒有哪個框架解決所有問題,如果那樣,搞計算機也太簡單了,框架拿來,隨便改改就是一個軟件。還是學點設計模式這些基本的有用。