2013年8月31日 星期六

Apache Mahout

Apache MahoutApache Software Foundation旗下的一個開放原始碼的專案,其專案的目的,在於提供具規模可擴充性的機器學習(Machine Learning)程式庫。 

但機器學習是一門很廣闊的領域,而Mahout 的目標是提供各類的經典演算法,以程式庫的方式呈現,Mahout也具備高效及規模可擴充性的特質。 

Mahout在英文翻譯中的意思是「象夫」,有象夫這個名字,是因為Mahout是為了提供規模可擴充性,是基於Apache Software Foundation另一個專案平臺Hadoop之名,以MapReduece的演算法,實作了像群集(clustering)、分類(classification),以及協同過濾(collaborative filtering)的核心演算法。

Mahout 不需要依附在Hadoop之上也可運行,Mahout自身提供了單一節點、非Hadoop的實作版本,開發者可以依據計算能力及規模大,來決定運行的方式。

Mahout所提供的演算法,而非全都分散式的演算法,且都經過高度的最佳化。

因為所以提供的演算法,不論是否是分散式演算法,或是無論在雲端上,都可以提供機器學習或推薦系統良好的環境。

Mahout中提供了許多分類的演算法,像是推薦引擎(Mahout中專指協同過濾式的推薦)、分類演算法、群集演算法、模式探勘(Pattern Mining)、降維(Dimension Reduction),以及向量相似度(Vector Similarity)等,

這些演算法也被運用在各領域中,而可以減少在建置上的成本,也可以結合多種演算法,來達到更有效率的運作,


對於一個推薦系統來說,是節省成本,可以混合多種演算法,對面海量資料也提供規模及擴充性,Mahout是具有足夠彈性的框架

參考資料:

Hadoop Pig

PigApache Hadoop專案的其中一個子專案,Pig提供了一個Script語言Pig Latin。在Pig下有兩種執行模式:
1.          Local模式:適用於測試程式偵錯,在此模式下Pig指存取一台主機並在短時間處裡少量資料。
2.          MapReduce模式:Pig需要把真正的查詢轉換成對應的MapReduce作業,並傳送到Hadoop叢集去執行,在此模式下為Pig LocalHadoop操作結合。
Pig Latin的資料型態表
單一資料型別
描述
範例
標量
int
有符號32為元整數
10
long
有符號64為元整數
資料:10L10I
顯示:10L
float
32位浮點數
資料:10.5F10.5f10.5e2f10.5E2F
顯示:10.5For1050.0F
double
64位浮點數
資料:10.5 or 10.5e2 or 10.5E2
顯示:10.5or1050.0
chararray
字元陣列使用UTF-8格式進行編碼
Hello world
bytearray
位元組陣列

複雜資料型態
Tuple
有序的欄位集
(19,2)
bag
元組集合
{(19,2)(19,2),(18,1)}
map
鍵值對集合
[open#apache]
參考資料:
1.          Pig環境

2.          Pig網路教學

2013年8月26日 星期一

NoSQL

NoSQL是一個資料庫的統稱名詞,它也是個儲存資料的資料庫。但不同於傳統的關聯式資料庫如:MSSQL、MySQLSyBase、Informix、PostgreSQL...等等,其較大差異在於它查詢資料時,主要並不是採SQL語法做查詢,雖然仍有某些NoSQL提供SQL語法查詢,但是,沒有優於關聯式的SQL結構化查詢其次是資料儲存時無須定義schema才能儲存,且儲存時並非得以表格形式儲存。然而它的出現並不是要取代關聯式資料庫,而是在資料儲存會有日增月益的情況時,意指資料只會有增無減為前提,即是有必要採用NoSQL為資料儲存;或者網站服務中,有提供索引文件的查詢、網站流量屬於較高者,資料庫系統會比較適合使用NoSQL類型常見的NoSQL資料庫主要有四類,分別是:Key-Value儲存分散式資料、記憶體資料庫(In-memory Database)、文件資料庫(Document Database)、圖形資料庫(Graph Database)的資料庫。目前,較具主流且被廣泛使用則是Key-Value儲存,該資料庫運用上,特色在於適用儲存大量資料,能夠以Key值快速的查詢到資料,較具代表性先驅有Google、Facebook這兩家公司

如下為各個NoSQL資料庫的用途:

Key-Value 存儲:Google BigTableAmazon Dynamo、Hadoop HBase、Facebook Cassandra、Hypertable
記憶體存儲:Memcached、Redis、Velocity、Tuple space
文件資料庫MongoDB、CouchDB、Riak
料庫AllegroGraph、Neo4j、InfoGrid

NoSQL  秉持著五大原則:

1.NoSQL是Not Only SQL
2.增加機器就能自動擴充資料庫容量
3.打破Schema欄位架構的限制 
4.資料遲早會一致 
5.成熟度不足,版本升級風險高 

參考出處:

http://zh.wikipedia.org/wiki/NoSQL
http://www.ithome.com.tw/itadm/article.php?c=63360&s=1
http://nosql-database.org/