Saturday, August 31, 2013

[repost ]How-to: Select the Right Hardware for Your New Hadoop Cluster

original:http://blog.cloudera.com/blog/2013/08/how-to-select-the-right-hardware-for-your-new-hadoop-cluster/ One of the first questions Cloudera customers raise when getting started with Apache Hadoop is how to select appropriate hardware for their new Hadoop clusters. Although Hadoop is designed to run on industry-standard hardware, recommending an ideal cluster configuration is not as easy as delivering a list of hardware specifications. Selecting hardware that provides [...]



via WordPress http://blog.newitfarmer.com/big_data/hadoop/12669/repost-how-to-select-the-right-hardware-for-your-new-hadoop-cluster#utm_source=rss&utm_medium=rss&utm_campaign=repost-how-to-select-the-right-hardware-for-your-new-hadoop-cluster

Labels:

[repost ]Book: Twitter Data Analytics – free download

original:http://www.kdnuggets.com/2013/08/book-twitter-data-analytics-free-download.html New book, Twitter Data Analytics, explains Twitter data collection, management, and analysis – download a free preprint (PDF) and code examples. Twitter Data Analytics by Shamanth Kumar, Fred Morstatter, and Huan Liu Data Mining and Machine Learning Lab Arizona State University Springer, 2013. Social media has become a major platform for information sharing. Due [...]



via WordPress http://blog.newitfarmer.com/social-computing/social-analytics/12667/repost-book-twitter-data-analytics-free-download#utm_source=rss&utm_medium=rss&utm_campaign=repost-book-twitter-data-analytics-free-download

Labels:

Friday, August 30, 2013

[repost ]GFS, HDFS, Blob File System架构对比

original:http://blogread.cn/it/article/3122 分布式文件系统很多,包括GFS,HDFS,淘宝开源的TFS,Tencent用于相册存储的TFS (Tencent FS,为了便于区别,后续称为QFS),以及Facebook Haystack。其中,TFS,QFS以及Haystack需要解决的问题以及架构都很类似,这三个文件系统称为Blob FS (Blob File System)。本文从分布式架构的角度对三种典型的文件系统进行对比。 我们先看GFS和HDFS。HDFS基本可以认为是GFS的一个简化版实现,二者因此有很多相似之处。首先,GFS和HDFS都采用单一主控机+多台工作机的模式,由一台主控机(Master)存储系统全部元数据,并实现数据的分布、复制、备份决策,主控机还实现了元数据的checkpoint和操作日志记录及回放功能。工作机存储数据,并根据主控机的指令进行数据存储、数据迁移和数据计算等。其次,GFS和HDFS都通过数据分块和复制(多副本,一般是3)来提供更高的可靠性和更高的性能。当其中一个副本不可用时,系统都提供副本自动复制功能。同时,针对数据读多于写的特点,读服务被分配到多个副本所在机器,提供了系统的整体性能。最后,GFS和HDFS都提供了一个树结构的文件系统,实现了类似与Linux下的文件复制、改名、移动、创建、删除操作以及简单的权限管理等。 然而,GFS和HDFS在关键点的设计上差异很大,HDFS为了规避GFS的复杂度进行了很多简化。首先,GFS最为复杂的部分是对多客户端并发追加同一个文件,即多客户端并发Append模型。GFS允许文件被多次或者多个客户端同时打开以追加数据,以记录为单位。假设GFS追加记录的大小为16KB ~ 16MB之间,平均大小为1MB,如果每次追加都访问GFS Master显然很低效,因此,GFS通过Lease机制将每个Chunk的写权限授权给Chunk Server。写Lease的含义是Chunk Server对某个Chunk在Lease有效期内(假设为12s)有写权限,拥有Lease的Chunk Server称为Primary Chunk Server,如果Primary Chunk Server宕机,Lease有效期过后Chunk的写Lease可以分配给其它Chunk Server。多客户端并发追加同一个文件导致Chunk Server需要对记录进行定序,客户端的写操作失败后可能重试,从而产生重复记录,再加上客户端API为异步模型,又产生了记录乱序问题。Append模型下重复记录、乱序等问题加上Lease机制,尤其是同一个Chunk的Lease可能在Chunk Server之间迁移,极大地提高了系统设计和一致性模型的复杂度。而在HDFS中,HDFS文件只允许一次打开并追加数据,客户端先把所有数据写入本地的临时文件中,等到数据量达到一个Chunk的大小(通常为64MB),请求HDFS Master分配工作机及Chunk编号,将一个Chunk的数据一次性写入HDFS文件。由于累积64MB数据才进行实际写HDFS系统,对HDFS Master造成的压力不大,不需要类似GFS中的将写Lease授权给工作机的机制,且没有了重复记录和乱序的问题,大大地简化了系统的设计。然而,我们必须知道,HDFS由于不支持Append模型带来的很多问题,构建于HDFS之上的Hypertable和HBase需要使用HDFS存放表格系统的操作日志,由于HDFS的客户端需要攒到64MB数据才一次性写入到HDFS中,Hypertable和HBase中的表格服务节点(对应于Bigtable中的Tablet Server)如果宕机,部分操作日志没有写入到HDFS,可能会丢数据。其次是Master单点失效的处理。GFS中采用主从模式备份Master的系统元数据,当主Master失效时,可以通过分布式选举备机接替主Master继续对外提供服务,而由于Replication及主备切换本身有一定的复杂性,HDFS Master的持久化数据只写入到本机(可能写入多份存放到Master机器的多个磁盘中防止某个磁盘损害),出现故障时需要人工介入。另外一点是对快照的支持。GFS通过内部采用copy-on-write的数据结构实现集群快照功能,而HDFS不提供快照功能。在大规模分布式系统中,程序有bug是很正常的情况,虽然大多数情况下可以修复bug,不过很难通过补偿操作将系统数据恢复到一致的状态,往往需要底层系统提供快照功能,将系统恢复到最近的某个一致状态。总之,HDFS基本可以认为是GFS的简化版,由于时间及应用场景等各方面的原因对GFS的功能做了一定的简化,大大降低了复杂度。 Blob File System的需求和GFS/HDFS其实是有区别的。GFS和HDFS比较通用,可以在GFS和HDFS上搭建通用的表格系统,如Bigtable,Hypertable以及HBase,而Blog File System的应用场景一般为图片,相册这类的Blob数据。GFS的数据是一点一点追加写入到系统的,而Blob数据一般是整个Blob块一次性准备好写入到Blob文件系统,如用户上传一个图片。GFS是大文件系统,考虑吞吐量,可以在上面搭建通用KV或者通用表格系统,而Blob文件系统是小文件系统,一般只是用来存放Blob数据。GFS与Blob FS看起来也有很多相似之处,比如GFS和TFS目前都采用单一主控机+多台工作机的模式,主控机实现数据的分布、复制、备份决策,工作机存储数据,并根据主控机命令进行数据存储,迁移等,但是,二者的区别还是比较大的。由于业务场景不同,二者面临的问题不同,在Blob FS中,由于整个Blob块数据一次准备就绪,Blob FS的数据写入模型天生就是比较简单,每次写入都请求Master分配Blob块编号及写入的机器列表,然后一次性写入到多台机器中。然而,Blob FS面临的挑战是元数据过于庞大的问题。由于Blob FS存储的Blob块个数一般很大,比如TFS中存储了百亿级的淘宝图片,假设每张图片的元数据占用20字节,所有的元数据占用空间为10G * 20 = 200GB,单机内存存放不下,并且数据量膨胀很快。因此,TFS, QFS以及Facebook Haystack都采取了几乎相同的思路,Blob FS不存放元数据,元数据存放到外部的系统中。比如,淘宝TFS中的元数据为图片的id,这些图片id存放在外部数据库,比如商品库中,外部数据库一般是Oracle或者Mysql sharding集群。Blob FS内部也是按照Chunk块组织数据,每个Blob文件是一个逻辑文件,内部的Chunk块是一个物理文件,多个逻辑文件共享同一个物理文件,从而减少单个工作机的物理文件的个数。由于所有物理文件的元数据都可以存放到内存中,每次读取Blob逻辑文件只需要一次磁盘IO,基本可以认为达到了最优。 总之,HDFS和GFS可以认为是类似的,GFS基本覆盖了HDFS的功能,而Blob FS和GFS面临的问题不同,设计的出发点也不一样,两类系统有本质的差别。如果需要将GFS和Blob FS统一成一套系统,这套系统需要同时支持大文件和小文件,且这套系统因为存放的元数据量太大,Master节点本身也需要设计成分布式。这个大一统的系统实现复杂度非常高,目前只有GFS v2有可能可以做到。



via WordPress http://blog.newitfarmer.com/infra/storage-network/12665/repost-gfs-hdfs-blob-file-system%e6%9e%b6%e6%9e%84%e5%af%b9%e6%af%94#utm_source=rss&utm_medium=rss&utm_campaign=repost-gfs-hdfs-blob-file-system%25e6%259e%25b6%25e6%259e%2584%25e5%25af%25b9%25e6%25af%2594

Labels:

Thursday, August 29, 2013

[repost ]orientdb Concepts

original:https://github.com/orientechnologies/orientdb/wiki/Concepts Storage Cluster Local Physical Cluster In-Memory cluster Data Segment Record Record types Document Flat RecordID Record version Class Abstract Class When to use class or cluster in queries? Relationships Referenced relationships 1-1 and N-1 referenced relationships 1-N and N-M referenced relationships Embedded relationships 1-1 and N-1 embedded relationships 1-N and N-M embedded relationships Inverse_relationships [...]



via WordPress http://blog.newitfarmer.com/nosql/graph-store/orientdb-graph-store/12643/repost-orientdb-concepts#utm_source=rss&utm_medium=rss&utm_campaign=repost-orientdb-concepts

Labels:

[repost ]理解本真的REST架构风格

original:http://www.infoq.com/cn/articles/understanding-restful-style 本文是“深入探索REST”专栏系列深度内容中的第二篇,它将带您领略REST架构的起源、与Web的关系、REST架构的本质及特性,以及REST架构与其他架构风格之间的比较。 引子 在移动互联网、云计算迅猛发展的今天,作为一名Web开发者,如果您还没听说过“REST”这个buzzword,显然已经落伍了。夸张点说,甚至“出了门都不好意思跟别人打招呼”。尽管如此,对于REST这个泊来品的理解,大多数人(包括一些资深的架构师)仍然停留在“盲人摸象”的阶段。常常听到各种各样关于REST的说法,例如:有人说:“我们这套新的API决定不用Web Service(SOAP+WSDL),而是直接使用HTTP+JSON,也就是用RESTful的方式来开发。” 不用SOAP,甚至也不用XML,就自动变成了RESTful了。还有人认为:REST与传统的Web Service其实没有本质区别,只是对于URI的构造方式提出了更多要求,而这些要求Web Service完全都可以实现。潜台词是:既生瑜,何生亮。Web Service已经足够好了,干嘛还要再折腾什么REST。这些对于REST的不同说法,果真如此吗?REST究竟是什么?是一种新的技术、一种新的架构、还是一种新的规范? 对于这些问题笔者先不解答,为了深入理解REST是什么,我们需要回顾一下Web发展的最初年代,从源头上讲讲REST是怎么得来的。 Web技术发展与REST的由来 Web(万维网World Wide Web的简称)是个包罗万象的万花筒,不同的人从不同的角度观察,对于Web究竟是什么会得出大不相同的观点。作为Web开发者,我们需要从技术上来理解Web。从技术架构层面上看,Web的技术架构包括了四个基石: URI HTTP HyperText(除了HTML外,也可以是带有超链接的XML或JSON) MIME 这四个基石相互支撑,促使Web这座宏伟的大厦以几何级数的速度发展了起来。在这四个基石之上,Web开发技术的发展可以粗略划分成以下几个阶段: 静态内容阶段:在这个最初的阶段,使用Web的主要是一些研究机构。Web由大量的静态HTML文档组成,其中大多是一些学术论文。Web服务器可以被看作是支持超文本的共享文件服务器。 CGI程序阶段:在这个阶段,Web服务器增加了一些编程API。通过这些API编写的应用程序,可以向客户端提供一些动态变化的内容。Web服务器与应用程序之间的通信,通过CGI(Common Gateway Interface)协议完成,应用程序被称作CGI程序。 脚本语言阶段:在这个阶段,服务器端出现了ASP、PHP、JSP、ColdFusion等支持session的脚本语言技术,浏览器端出现了Java Applet、JavaScript等技术。使用这些技术,可以提供更加丰富的动态内容。 瘦客户端应用阶段:在这个阶段,在服务器端出现了独立于Web服务器的应用服务器。同时出现了Web MVC开发模式,各种Web MVC开发框架逐渐流行,并且占据了统治地位。基于这些框架开发的Web应用,通常都是瘦客户端应用,因为它们是在服务器端生成全部的动态内容。 RIA应用阶段:在这个阶段,出现了多种RIA(Rich Internet Application)技术,大幅改善了Web应用的用户体验。应用最为广泛的RIA技术是DHTML+Ajax。Ajax技术支持在不刷新页面的情况下动态更新页面中的局部内容。同时诞生了大量的Web前端DHTML开发库,例如Prototype、Dojo、ExtJS、jQuery/jQuery UI等等,很多开发库都支持单页面应用(Single Page Application)的开发。其他的RIA技术还有Adobe公司的Flex、微软公司的Silverlight、Sun公司的JavaFX(现在为Oracle公司所有)等等。 移动Web应用阶段:在这个阶段,出现了大量面向移动设备的Web应用开发技术。除了Android、iOS、Windows Phone等操作系统平台原生的开发技术之外,基于HTML5的开发技术也变得非常流行。 从上述Web开发技术的发展过程看,Web从最初其设计者所构思的主要支持静态文档的阶段,逐渐变得越来越动态化。Web应用的交互模式,变得越来越复杂:从静态文档发展到以内容为主的门户网站、电子商务网站、搜索引擎、社交网站,再到以娱乐为主的大型多人在线游戏、手机游戏。 在互联网行业,实践总是走在理论的前面。Web发展到了1995年,在CGI、ASP等技术出现之后,沿用了多年、主要面向静态文档的HTTP/1.0协议已经无法满足Web应用的开发需求,因此需要设计新版本的HTTP协议。在HTTP/1.0协议专家组之中,有一位年轻人脱颖而出,显示出了不凡的洞察力,后来他成为了HTTP/1.1协议专家组的负责人。这位年轻人就是Apache HTTP服务器的核心开发者Roy Fielding,他还是Apache软件基金会的合作创始人。 Roy Fielding和他的同事们在HTTP/1.1协议的设计工作中,对于Web之所以取得巨大成功,在技术架构方面的因素做了一番深入的总结。Fielding将这些总结纳入到了一套理论框架之中,然后使用这套理论框架中的指导原则,来指导HTTP/1.1协议的设计方向。HTTP/1.1协议的第一个草稿是在1996年1月发布的,经过了三年多时间的修订,于1999年6月成为了IETF的正式规范(包括了RFC 2616以及用于对客户端做身份认证的RFC 2617)。HTTP/1.1协议设计的极为成功,以至于发布之后整整10年时间里,都没有多少人认为有修订的必要。用来指导HTTP/1.1协议设计的这套理论框架,最初是以备忘录的形式在专家组成员之间交流,除了IETF/W3C的专家圈子,并没有在外界广泛流传。Fielding在完成HTTP/1.1协议的设计工作之后,回到了加州大学欧文分校继续攻读自己的博士学位。第二年(2000年)在他的博士学位论文Architectural Styles and the Design of Network-based Software Architectures中,Fielding更为系统、严谨地阐述了这套理论框架,并且使用这套理论框架推导出了一种新的架构风格,并且为这种架构风格取了一个令人轻松愉快的名字“REST”——Representational State Transfer(表述性状态转移)的缩写。 在笔者看来,Fielding这篇博士论文在Web发展史上的价值,不亚于Web之父Tim [...]



via WordPress http://blog.newitfarmer.com/web/rest/12639/repost-%e7%90%86%e8%a7%a3%e6%9c%ac%e7%9c%9f%e7%9a%84rest%e6%9e%b6%e6%9e%84%e9%a3%8e%e6%a0%bc#utm_source=rss&utm_medium=rss&utm_campaign=repost-%25e7%2590%2586%25e8%25a7%25a3%25e6%259c%25ac%25e7%259c%259f%25e7%259a%2584rest%25e6%259e%25b6%25e6%259e%2584%25e9%25a3%258e%25e6%25a0%25bc

Labels:

[repost ]使用Percona Data Recovery Tool for InnoDB恢复数据

original:http://hidba.org/?p=852 昨晚收到一则求助,一个用户的本地数据库的重要数据由于误操作被删除,需要进行紧急恢复,用户的数据库日常并没有进行过任何备份,binlog也没有开启,所以从备份和binlog入手已经成为不可能,咨询了丁奇,发了一篇percona的文章给我,顿时感觉有希望,于是到percona的官网上下载了恢复工具: 一.安装: .tar -xvf percona-data-recovery-tool-for-innodb-0.5.tar.gz .cd percona-data-recovery-tool-for-innodb-0/mysql-source/ ../configure .cd percona-data-recovery-tool-for-innodb-0 .make 二.解析ibd文件: 此过程会将表的idb文件解析为很多的page,innodb的page分为两大部分,一部分一级索引部分(primary key),另一部分为二级索引部分(secondary key),所以解析出来的idb包括了主键数据和索引数据两大部分(如果该表有多个二级索引,则会生成多个文件) ./page_parser -5 -f t_bibasic_storage.ibd 参数解释: -5:代表 row format为Compact -f:代表要解析的文件 结果如下: pages-1377707810/FIL_PAGE_INDEX 0-161 0-325 0-463 0-464 0-465 可以看到t_bibasic_storage.ibd解析出来5个文件(161为主键索引的index_id,325,463,464,465为二级索引的index_id,该id可以通过开启innodb_table_monitor知晓) 三.生成表定义: 由于该工具在解析数据pages的时候,需要获得该table的表结构定义,所以需要执行如下命令: ./create_defs.pl –host xxxx –port 3306 –user root –password xxx –db didb –table t_bibasic_storage >include/table_defs.h 上面的命令会将t_bibasic_storage表的表结构定义传入到table_defs.h中,在生成了表结构定义后,重新make该恢复工具: .make 四.开始恢复pages中删除的数据: 在重新编译工具后,执行如下命令: ./constraints_parser -5 [...]



via WordPress http://blog.newitfarmer.com/imd/mysql/12633/repost-%e4%bd%bf%e7%94%a8percona-data-recovery-tool-for-innodb%e6%81%a2%e5%a4%8d%e6%95%b0%e6%8d%ae#utm_source=rss&utm_medium=rss&utm_campaign=repost-%25e4%25bd%25bf%25e7%2594%25a8percona-data-recovery-tool-for-innodb%25e6%2581%25a2%25e5%25a4%258d%25e6%2595%25b0%25e6%258d%25ae

Labels:

Tuesday, August 27, 2013

[repost ]Linux: Set OR Change The Library Path

original:http://www.cyberciti.biz/faq/linux-setting-changing-library-path/ ‘ve compile and installed a library at /usr/local/lib/libapp2.so -> libapp2.so.1.4.3. How do I set the Library path under Linux operating systems? You need to use ldconfig config file and ldconfig command which creates the necessary links and cache to the most recent shared libraries found in the directories specified on the command line, in [...]



via WordPress http://blog.newitfarmer.com/infra/linux/12624/repost-linux-set-or-change-the-library-path#utm_source=rss&utm_medium=rss&utm_campaign=repost-linux-set-or-change-the-library-path

Labels:

[repost ]How to create a standalone from a SICStus prolog file

original:http://www.csc.kth.se/~jwikst/sicstus_standalone.html After having searched the internet, I e-mailed SICS and got two methods to create a standalone. I was using: SICStus prolog VC9 4.2.0 Microsoft Visual C++ 2010 Service Pack 1 To create a standalone .exe file you need a C-compiler that matches your installation of SICStus. These C-compilers are included in the following versions [...]



via WordPress http://blog.newitfarmer.com/programming/prolog/12622/repost-how-to-create-a-standalone-from-a-sicstus-prolog-file#utm_source=rss&utm_medium=rss&utm_campaign=repost-how-to-create-a-standalone-from-a-sicstus-prolog-file

Labels:

[repost ]On Lisp

original:http://www.ituring.com.cn/minibook/862?q=On%20Lisp



via WordPress http://blog.newitfarmer.com/programming/lisp/12620/repost-on-lisp#utm_source=rss&utm_medium=rss&utm_campaign=repost-on-lisp

Labels: