开源软件

开源软件

[开源工具]模拟数据生成器:Data-Processer

运维技术云智慧APM 发表了文章 • 1 个评论 • 318 次浏览 • 2016-12-16 14:37 • 来自相关话题

支撑互联网时代的7大开源软件

互联网资讯being 发表了文章 • 0 个评论 • 532 次浏览 • 2016-09-07 00:41 • 来自相关话题

开源软件现在成为整个互联网时代的支撑技术,你可能已经无法离开由开源软件构建起来的网络世界了。下面我们就来看看一些最重要的开源技术。
 

最伟大的互联网开源系统Linux





Linux是一款免费的操作系统,诞生于1991年,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。

它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳 定的多用户网络操作系统。这个系统是由全世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的 Unix兼容产品。

Linux可以说是已经无处不在,像Android手机就是以Linux为基础开发的,世界上大多的超级计算机也都采用的Linux系统,大多数的 数据中心使用Linux作为其支撑操作系统。谷歌、百度、淘宝等都通过Linux提供了我们每天用的互联网服务。Linux在航空控制系统中也扮演着重要角色,而且现在互联网的程序员和运维工作人员等,每天基本都是和Linux系统打交道。
 

加密互联网的安全协议OpenSSL





OpenSSL是套开放源代码的软件库包,实现了SSL与TLS协议。OpenSSL可以说是一个基于密码学的安全开发包,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。

也可以说OpenSSL是网络通信提供安全及数据完整性的一种安全协议,SSL可以在Internet上提供秘密性传输,能使用户/服务器应用之间的通信不被攻击者窃听。OpenSSL被网银、在线支付、电商网站、门户网站、电子邮件等重要网站广泛使用。

去年OpenSSL爆出安全漏洞,因为其应用如此之广,该漏洞爆出让整个互联网都为之震颤。
 

数据仓库大王--MySQL





MySQL是一个开源的小型的数据库管理系统,原开发者为瑞典的MySQL AB公司,该公司于2008年被Sun公司收购。2009年,甲骨文公司(Oracle)收购Sun公司,MySQL成为Oracle旗下产品。

很多信息都是存在数据库里面的,很多工程师在开发一些的小型项目时都会采用这个MySQL数据库。MySQL为C、C++、JAVA、PHP等多重 编程语言提供了API接口。而且支持windows、Mac、Linux等多种系统。这种广泛的支持使其得到更多开发者的青睐,MySQL是开发者需要掌 握的数据库之一。

Mysql最初为小型应用而开发,但现在的Mysql已经不是一个小型数据库了。基本上所有的互联网公司都会使用这个数据库系统,一些金融交易也会 采用Mysql作为数据库引擎。Mysql通过相应的调优既可以支撑大规模的访问,又可以保证数据安全性,已经成为威胁传统商业数据库系统的重要力量。
 

万能开发工具Eclipse





Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。Eclipse最初由OTI和IBM两家公司的IDE产品开发组创建,起始于1999年4月。目前由 IBM牵头,围绕着Eclipse项目已经发展成为了一个庞大的Eclipse联盟,有150多家软件公司参与到Eclipse项目中,其中包括 Borland、Rational Software、Red Hat及Sybase等。

就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。很多Java编程软件都是在Eclipse平台开发的,还有包括 Oracle在内的许多大公司也纷纷加入了该项目,并宣称Eclipse将来能成为可进行任何语言开发的IDE集大成者,使用者只需下载各种语言的插件即可。

Eclipse并不是一个直接服务于消费者的产品,它更像一个工匠手中万用工具,用Eclipse开发者可以打造出各种充满创造性的服务来满足最终用户的需求。
 

互联网的门卫Apache





Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛 使用,也是最流行的Web服务器端软件之一,市场占有率达60%左右。它快速、可靠并且可通过简单的API扩展,它可以和各种解释器配合使用,包括 PHP/Perl/Python等。

Apache就像一个负责的门卫,管理着服务器数据的进出。每当你在你的地址栏里输入http://xxoo.com  的时候,在遥远的远端,很有可能正是一台跑着Apache的服务器,将你需要的信息传输给浏览器。
 

大数据的心脏Hadoop





Hadoop 是一个能够对大量数据进行分布式处理的软件框架,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。Hadoop 一 直帮助解决各种问题,包括超大型数据集的排序和大文件的搜索。它还是各种搜索引擎的核心,比如 Amazon 的 A9 和用于查找酒信息 的 Able Grape 垂直搜索引擎。阿里巴巴集团在商品推荐、用户行为分析、信用计算领域也都有hadoop的应用。

在“大数据”已经成为潮流的当下,Hadoop已经成为最主要的一项技术。可以毫不夸张的说,没有Hadoop,就没有大多数的大数据应用。可以说对一个不知道Hadoop的程序员而言,你已经out了。
 

互联网的“排版引擎”WebKit





说是浏览器内核,其实“排版引擎”更容易理解一些。通过服务器传输给浏览器的信息只是一串乱糟糟的文本。要看到我们平时看到精美的网友,需要浏览器内核对这些文本进行解析,将枯燥的描述“画”成美丽的浏览界面。

WebKit 是一个开源的浏览器引擎,与之相应的引擎有Gecko(Mozilla Firefox 等使用的排版引擎)和Trident(也称为MSHTML,IE 使用的排版引擎)。根据StatCounter的浏览器市场份额调查,于2012年11月,Webkit市占超过了40%,它已经成为拥有最大市场份额的 排版引擎,超越了Internet Explorer所使用的Trident及Firefox所使用的Gecko引擎,并且WebKit份额正在逐年增加。

目前几乎所有网站和网银已经逐渐支持WebKit。WebKit 内核在手机上的应用也十分广泛,例如苹果的Safari、谷歌的Chrome浏览器都是基于这个框架来开发的。
 

总结

很多人可能尚未意识到,我们使用的电脑中运行有开源软件,手机中运行有开源软件,家里的电视也运行有开源软件,甚至小小的数码产品中也运行有开源软件,尤其是互联网服务器端软件,几乎全部是开源软件。毫不夸张地说,开源软件已经渗透到了我们日常生活的方方面面。
 
只有真正的开源软件产品才会做得更好,做得更有历史,会让使用的人由衷的感觉自由和快乐,只有这样才会像民族英雄一样,永远被传唱,被继承和传播,开源软件最大的意义就是众家参与,大家快乐,共同享受,为那些开源的极客们和开源企业致敬! 查看全部
开源软件现在成为整个互联网时代的支撑技术,你可能已经无法离开由开源软件构建起来的网络世界了。下面我们就来看看一些最重要的开源技术。
 


最伟大的互联网开源系统Linux


Linux.png

Linux是一款免费的操作系统,诞生于1991年,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。

它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳 定的多用户网络操作系统。这个系统是由全世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的 Unix兼容产品。

Linux可以说是已经无处不在,像Android手机就是以Linux为基础开发的,世界上大多的超级计算机也都采用的Linux系统,大多数的 数据中心使用Linux作为其支撑操作系统。谷歌、百度、淘宝等都通过Linux提供了我们每天用的互联网服务。Linux在航空控制系统中也扮演着重要角色,而且现在互联网的程序员和运维工作人员等,每天基本都是和Linux系统打交道。
 


加密互联网的安全协议OpenSSL


openssl.png

OpenSSL是套开放源代码的软件库包,实现了SSL与TLS协议。OpenSSL可以说是一个基于密码学的安全开发包,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。

也可以说OpenSSL是网络通信提供安全及数据完整性的一种安全协议,SSL可以在Internet上提供秘密性传输,能使用户/服务器应用之间的通信不被攻击者窃听。OpenSSL被网银、在线支付、电商网站、门户网站、电子邮件等重要网站广泛使用。

去年OpenSSL爆出安全漏洞,因为其应用如此之广,该漏洞爆出让整个互联网都为之震颤。
 


数据仓库大王--MySQL


mysql.png

MySQL是一个开源的小型的数据库管理系统,原开发者为瑞典的MySQL AB公司,该公司于2008年被Sun公司收购。2009年,甲骨文公司(Oracle)收购Sun公司,MySQL成为Oracle旗下产品。

很多信息都是存在数据库里面的,很多工程师在开发一些的小型项目时都会采用这个MySQL数据库。MySQL为C、C++、JAVA、PHP等多重 编程语言提供了API接口。而且支持windows、Mac、Linux等多种系统。这种广泛的支持使其得到更多开发者的青睐,MySQL是开发者需要掌 握的数据库之一。

Mysql最初为小型应用而开发,但现在的Mysql已经不是一个小型数据库了。基本上所有的互联网公司都会使用这个数据库系统,一些金融交易也会 采用Mysql作为数据库引擎。Mysql通过相应的调优既可以支撑大规模的访问,又可以保证数据安全性,已经成为威胁传统商业数据库系统的重要力量。
 


万能开发工具Eclipse


eclipse.png

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。Eclipse最初由OTI和IBM两家公司的IDE产品开发组创建,起始于1999年4月。目前由 IBM牵头,围绕着Eclipse项目已经发展成为了一个庞大的Eclipse联盟,有150多家软件公司参与到Eclipse项目中,其中包括 Borland、Rational Software、Red Hat及Sybase等。

就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。很多Java编程软件都是在Eclipse平台开发的,还有包括 Oracle在内的许多大公司也纷纷加入了该项目,并宣称Eclipse将来能成为可进行任何语言开发的IDE集大成者,使用者只需下载各种语言的插件即可。

Eclipse并不是一个直接服务于消费者的产品,它更像一个工匠手中万用工具,用Eclipse开发者可以打造出各种充满创造性的服务来满足最终用户的需求。
 


互联网的门卫Apache


apache.png

Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛 使用,也是最流行的Web服务器端软件之一,市场占有率达60%左右。它快速、可靠并且可通过简单的API扩展,它可以和各种解释器配合使用,包括 PHP/Perl/Python等。

Apache就像一个负责的门卫,管理着服务器数据的进出。每当你在你的地址栏里输入http://xxoo.com  的时候,在遥远的远端,很有可能正是一台跑着Apache的服务器,将你需要的信息传输给浏览器。
 


大数据的心脏Hadoop


hadoop.png

Hadoop 是一个能够对大量数据进行分布式处理的软件框架,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。Hadoop 一 直帮助解决各种问题,包括超大型数据集的排序和大文件的搜索。它还是各种搜索引擎的核心,比如 Amazon 的 A9 和用于查找酒信息 的 Able Grape 垂直搜索引擎。阿里巴巴集团在商品推荐、用户行为分析、信用计算领域也都有hadoop的应用。

在“大数据”已经成为潮流的当下,Hadoop已经成为最主要的一项技术。可以毫不夸张的说,没有Hadoop,就没有大多数的大数据应用。可以说对一个不知道Hadoop的程序员而言,你已经out了。
 


互联网的“排版引擎”WebKit


webkit.jpg

说是浏览器内核,其实“排版引擎”更容易理解一些。通过服务器传输给浏览器的信息只是一串乱糟糟的文本。要看到我们平时看到精美的网友,需要浏览器内核对这些文本进行解析,将枯燥的描述“画”成美丽的浏览界面。

WebKit 是一个开源的浏览器引擎,与之相应的引擎有Gecko(Mozilla Firefox 等使用的排版引擎)和Trident(也称为MSHTML,IE 使用的排版引擎)。根据StatCounter的浏览器市场份额调查,于2012年11月,Webkit市占超过了40%,它已经成为拥有最大市场份额的 排版引擎,超越了Internet Explorer所使用的Trident及Firefox所使用的Gecko引擎,并且WebKit份额正在逐年增加。

目前几乎所有网站和网银已经逐渐支持WebKit。WebKit 内核在手机上的应用也十分广泛,例如苹果的Safari、谷歌的Chrome浏览器都是基于这个框架来开发的。
 


总结


很多人可能尚未意识到,我们使用的电脑中运行有开源软件,手机中运行有开源软件,家里的电视也运行有开源软件,甚至小小的数码产品中也运行有开源软件,尤其是互联网服务器端软件,几乎全部是开源软件。毫不夸张地说,开源软件已经渗透到了我们日常生活的方方面面。
 
只有真正的开源软件产品才会做得更好,做得更有历史,会让使用的人由衷的感觉自由和快乐,只有这样才会像民族英雄一样,永远被传唱,被继承和传播,开源软件最大的意义就是众家参与,大家快乐,共同享受,为那些开源的极客们和开源企业致敬!

Docker的Web Ui管理和监控系统海鸥

开源项目OpenSkill 发表了文章 • 0 个评论 • 1541 次浏览 • 2016-08-23 00:33 • 来自相关话题

功能介绍

Seagull是一套友好的Web用户界面,用来全面的管理和监控Docker管理系统。
易于安装和Docker容器内卸载一键启动/停止/删除容器和image超快速(<10ms)的搜索和过滤支持多主机管理和监控国际化包括英语,中国,德国和法国
欲了解更多信息,请访问dockerseagull.com ,看三分钟的视频和官方的幻灯片 。
 

安装

安装非常简单,一条命令搞定,就是so easy!docker run -d -p 10086:10086 -v /var/run/docker.sock:/var/run/docker.sock tobegit3hub/seagull 或者运行:docker-compose up -d然后直接访问http://127.0.0.1:10086监控你的Docker容器;对于boot2docker用户,请运行boot2docker ip找到真正的IP地址。
 

Web效果图










多主机

海鸥支持监视多个服务器。 请确保你启动Docker的守护进程是这个样子 docker -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock -api-enable-cors=true -d

参与开发

海鸥是用Go和JavaScript实现的,使用了Beego、AngularJS、Bootstrap、Bower、JQuery和Docker等工具。你可以Fork这个项目并且按你的需求发送Pull-request。
配置Go路径然后尝试echo $GOPATHgo get github.com/astaxie/beegogo get github.com/beego/beegit clone https://github.com/tobegit3hub/seagull.git $GOPATH/src/github.com/tobegit3hub/seagull/go build seagull.go或者运行bee run seagull来调试./seagull或者运行sudo ./seagull来访问/var/run/docker.sock
更详细的海鸥设计和实施,还有非常好完善的帮助文档 。

注意

问题 #2表明,如果海鸥的IP和端口暴露每个人都可以访问您的Docker守护进程。 为了安全,你可以绑定到localhost来限制访问。
 
项目地址:https://github.com/tobegit3hub/seagull
  查看全部


功能介绍


Seagull是一套友好的Web用户界面,用来全面的管理和监控Docker管理系统。
  • 易于安装和Docker容器内卸载
  • 一键启动/停止/删除容器和image
  • 超快速(<10ms)的搜索和过滤
  • 支持多主机管理和监控
  • 国际化包括英语,中国,德国和法国

欲了解更多信息,请访问dockerseagull.com ,看三分钟的视频和官方的幻灯片
 


安装


安装非常简单,一条命令搞定,就是so easy!
docker run -d -p 10086:10086 -v /var/run/docker.sock:/var/run/docker.sock tobegit3hub/seagull 
或者运行:
docker-compose up -d
然后直接访问http://127.0.0.1:10086监控你的Docker容器;对于boot2docker用户,请运行boot2docker ip找到真正的IP地址。
 


Web效果图


docker_web_ui.png

DockerWebUI.png


多主机


海鸥支持监视多个服务器。 请确保你启动Docker的守护进程是这个样子
 docker -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock -api-enable-cors=true -d 


参与开发


海鸥是用Go和JavaScript实现的,使用了Beego、AngularJS、Bootstrap、Bower、JQuery和Docker等工具。你可以Fork这个项目并且按你的需求发送Pull-request。
  • 配置Go路径然后尝试echo $GOPATH
  • go get github.com/astaxie/beego
  • go get github.com/beego/bee
  • git clone https://github.com/tobegit3hub/seagull.git $GOPATH/src/github.com/tobegit3hub/seagull/
  • go build seagull.go或者运行bee run seagull来调试
  • ./seagull或者运行sudo ./seagull来访问/var/run/docker.sock

更详细的海鸥设计和实施,还有非常好完善的帮助文档 。


注意


问题 #2表明,如果海鸥的IP和端口暴露每个人都可以访问您的Docker守护进程。 为了安全,你可以绑定到localhost来限制访问。
 
项目地址:https://github.com/tobegit3hub/seagull
 


华为开源支持Apache Hadoop的列式存储文件格式的CarbonData

开源项目Geek小A 发表了文章 • 0 个评论 • 887 次浏览 • 2016-06-14 21:35 • 来自相关话题

CarbonData是由华为开发、开源并支持Apache Hadoop的列式存储文件格式,支持索引、压缩以及解编码等,其目的是为了实现同一份数据达到多种需求,而且能够实现更快的交互查询。目前该项目正处于Apache孵化过程中。

为什么重新设计一种文件格式

目前华为针对数据的需求分析主要有以下5点要求:
[]支持海量数据扫描并取其中几列;[/][]支持根据主键进行查找,并在压秒级响应;[/][]支持在海量数据进行类似于OLAP的交互式查询,并且查询中涉及到许多过滤条件,这种类型的workload应该在几秒钟内响应;[/][]支持快速地抽取单独的记录,并且从该记录中获取到所有列信息;[/][]支持HDFS,这样客户可以利用现有的Hadoop集群。[/]

目前现有的Hadoop生态系统中没有同时满足这五点要求文件格式。比如Parquet/ORC的文件仅仅满足第一和第五条要求,而其他的要求无法满足,所以基于这些事实华为开始开发CarbonData。

CarbonData有啥优势

CarbonData文件格式是基于列式存储的,并存储在HDFS之上;其包含了现有列式存储文件格式的许多有点,比如:可分割、可压缩、支持复杂数据类型等;并且CarbonData为了解决上面5点要求,加入了许多独特的特性,主要概括为以下四点:
[]存储数据及其索引:在有过滤的查询中,它可以显著地加速查询性能,减少I/O和CPU资源。CarbonData的索引由多级索引组成,处理框架可以利用这些索引信息来减少调度和一些处理的开销;在任务扫描数据的时候它可以仅仅扫描更细粒度的单元(称为blocklet),而不需要扫描整个文件。[/][]可操作的编码数据:通过支持高效的压缩和全局编码模式,它可以直接在压缩或者编码的数据上查询,仅仅在需要返回结果的时候才进行转换,这种技术被称为late materialized。[/][]列组:支持多列组成一个列组,并且使用行格式进行存储,这减少了查询时行重建的开销。[/][]支持多种使用场景:比如支持类OLAP风格的交互式查询、顺序存取、随机访问等。[/]

CarbonData文件格式

一个CarbonData文件是由一系列被称为blocklet组成的;除了blocklet,还有许多其他的元信息,比如模式、偏移量以及索引信息等,这些元信息是存储在CarbonData文件中的footer里。

每当在内存中建立索引的时候都需要读取footer里面的信息,因为可以利用这些信息优化后续所有的查询。

每个blocklet又是由许多Data Chunks组成。Data Chunks里面的数据既可以按列或者行的形式存储;数据既可以是单独的一列也可以是许多列。文件中所有的blocklets都包含相同数量和类型的Data Chunks。CarbonData文件格式如下所示:




每个Data Chunk又是由许多被称为Pages的单元组成。总共有三种类型的pages:

1、Data Page:包含一列或者列组的编码数据;

2、Row ID Page:包含行id的映射,在Data Page以反向索引的形式存储时会被使用;

3、RLE Page:包含一些额外的元信息,只有在Data Page使用RLE编码的时候会被使用。

CarbonData文件的详细信息如下:





编译CarbonData

编译CarbonData的预备条件:
1、类Unix环境(Linux, Mac OS X)
2、git
3、Apache Maven (推荐使用3.0.4)
4、Java 7 or 8
5、Scala 2.10
6、Apache Thrift 0.9.3
从github中克隆CarbonData$ git clone https://github.com/HuaweiBigData/carbondata.git根据自己需求依次选择下面命令编译CarbonData
1、Build without testing$ cd carbondata
$ mvn -DskipTests clean install 2、Build with testing:$ cd carbondata
$ mvn clean install3、Build along with integration test cases$ cd carbondata
$ mvn -Pintegration-test clean install更多关于Carbondata的信息请参考:https://github.com/HuaweiBigData/carbondata 
分享原文地址:http://www.iteblog.com/archives/1689 查看全部
CarbonData是由华为开发、开源并支持Apache Hadoop的列式存储文件格式,支持索引、压缩以及解编码等,其目的是为了实现同一份数据达到多种需求,而且能够实现更快的交互查询。目前该项目正处于Apache孵化过程中。


为什么重新设计一种文件格式


目前华为针对数据的需求分析主要有以下5点要求:
    []支持海量数据扫描并取其中几列;[/][]支持根据主键进行查找,并在压秒级响应;[/][]支持在海量数据进行类似于OLAP的交互式查询,并且查询中涉及到许多过滤条件,这种类型的workload应该在几秒钟内响应;[/][]支持快速地抽取单独的记录,并且从该记录中获取到所有列信息;[/][]支持HDFS,这样客户可以利用现有的Hadoop集群。[/]


目前现有的Hadoop生态系统中没有同时满足这五点要求文件格式。比如Parquet/ORC的文件仅仅满足第一和第五条要求,而其他的要求无法满足,所以基于这些事实华为开始开发CarbonData。


CarbonData有啥优势


CarbonData文件格式是基于列式存储的,并存储在HDFS之上;其包含了现有列式存储文件格式的许多有点,比如:可分割、可压缩、支持复杂数据类型等;并且CarbonData为了解决上面5点要求,加入了许多独特的特性,主要概括为以下四点:
    []存储数据及其索引:在有过滤的查询中,它可以显著地加速查询性能,减少I/O和CPU资源。CarbonData的索引由多级索引组成,处理框架可以利用这些索引信息来减少调度和一些处理的开销;在任务扫描数据的时候它可以仅仅扫描更细粒度的单元(称为blocklet),而不需要扫描整个文件。[/][]可操作的编码数据:通过支持高效的压缩和全局编码模式,它可以直接在压缩或者编码的数据上查询,仅仅在需要返回结果的时候才进行转换,这种技术被称为late materialized。[/][]列组:支持多列组成一个列组,并且使用行格式进行存储,这减少了查询时行重建的开销。[/][]支持多种使用场景:比如支持类OLAP风格的交互式查询、顺序存取、随机访问等。[/]


CarbonData文件格式


一个CarbonData文件是由一系列被称为blocklet组成的;除了blocklet,还有许多其他的元信息,比如模式、偏移量以及索引信息等,这些元信息是存储在CarbonData文件中的footer里。

每当在内存中建立索引的时候都需要读取footer里面的信息,因为可以利用这些信息优化后续所有的查询。

每个blocklet又是由许多Data Chunks组成。Data Chunks里面的数据既可以按列或者行的形式存储;数据既可以是单独的一列也可以是许多列。文件中所有的blocklets都包含相同数量和类型的Data Chunks。CarbonData文件格式如下所示:
carbon_data_file_structure_new.png

每个Data Chunk又是由许多被称为Pages的单元组成。总共有三种类型的pages:

1、Data Page:包含一列或者列组的编码数据;

2、Row ID Page:包含行id的映射,在Data Page以反向索引的形式存储时会被使用;

3、RLE Page:包含一些额外的元信息,只有在Data Page使用RLE编码的时候会被使用。

CarbonData文件的详细信息如下:
carbon_data_format_new.png


编译CarbonData


编译CarbonData的预备条件:
1、类Unix环境(Linux, Mac OS X)
2、git
3、Apache Maven (推荐使用3.0.4)
4、Java 7 or 8
5、Scala 2.10
6、Apache Thrift 0.9.3
从github中克隆CarbonData
$ git clone https://github.com/HuaweiBigData/carbondata.git
根据自己需求依次选择下面命令编译CarbonData
1、Build without testing
$ cd carbondata
$ mvn -DskipTests clean install
2、Build with testing:
$ cd carbondata
$ mvn clean install
3、Build along with integration test cases
$ cd carbondata
$ mvn -Pintegration-test clean install
更多关于Carbondata的信息请参考:https://github.com/HuaweiBigData/carbondata 
分享原文地址:http://www.iteblog.com/archives/1689

php扩展谷歌JsonNet发布

开源项目chris 发表了文章 • 0 个评论 • 642 次浏览 • 2016-06-02 16:33 • 来自相关话题

就在昨天,六一儿童节,云智慧高级架构师Neeke把支持谷歌的JsonNet的php扩展模块封装开源了!
 
简单语法改进
Input (Jsonnet){
cocktails: {
// Ingredient quantities are in fluid ounces.
"Tom Collins": {
ingredients: [
{ kind: "Farmers Gin", qty: 1.5 },
{ kind: "Lemon", qty: 1 },
{ kind: "Simple Syrup", qty: 0.5 },
{ kind: "Soda", qty: 2 },
{ kind: "Angostura", qty: "dash" },
],
garnish: "Maraschino Cherry",
served: "Tall",
},
Manhattan: {
ingredients: [
{ kind: "Rye", qty: 2.5 },
{ kind: "Sweet Red Vermouth", qty: 1 },
{ kind: "Angostura", qty: "dash" },
],
garnish: "Maraschino Cherry",
served: "Straight Up",
},
}
}Output (JSON){
"cocktails": {

"Tom Collins": {
"ingredients": [
{ "kind": "Farmers Gin", "qty": 1.5 },
{ "kind": "Lemon", "qty": 1 },
{ "kind": "Simple Syrup", "qty": 0.5 },
{ "kind": "Soda", "qty": 2 },
{ "kind": "Angostura", "qty": "dash" }
],
"garnish": "Maraschino Cherry",
"served": "Tall"
},
"Manhattan": {
"ingredients": [
{ "kind": "Rye", "qty": 2.5 },
{ "kind": "Sweet Red Vermouth", "qty": 1 },
{ "kind": "Angostura", "qty": "dash" }
],
"garnish": "Maraschino Cherry",
"served": "Straight Up"
}
}
}Demo of PHP JsonNet::evaluateFile('bar_menu.1.jsonnet');

$Snippet = '
{
cocktails: {
// Ingredient quantities are in fluid ounces.
"Tom Collins": {
ingredients: [
{ kind: "Farmers Gin", qty: 1.5 },
{ kind: "Lemon", qty: 1 },
{ kind: "Simple Syrup", qty: 0.5 },
{ kind: "Soda", qty: 2 },
{ kind: "Angostura", qty: "dash" },
],
garnish: "Maraschino Cherry",
served: "Tall",
},
Manhattan: {
ingredients: [
{ kind: "Rye", qty: 2.5 },
{ kind: "Sweet Red Vermouth", qty: 1 },
{ kind: "Angostura", qty: "dash" },
],
garnish: "Maraschino Cherry",
served: "Straight Up",
},
}
}
';

var_dump(JsonNet::evaluateSnippet($Snippet));安装请参考我的实践文章:http://www.openskill.cn/article/373
 
项目地址:

Github:https://github.com/Neeke/Jsonnet-PHP
Pecl:  http://pecl.php.net/package/jsonnet 
Gitosc:  http://git.oschina.net/ciogao/Jsonnet-PHP 查看全部
就在昨天,六一儿童节,云智慧高级架构师Neeke把支持谷歌的JsonNet的php扩展模块封装开源了!
 
简单语法改进
Input (Jsonnet)
{
cocktails: {
// Ingredient quantities are in fluid ounces.
"Tom Collins": {
ingredients: [
{ kind: "Farmers Gin", qty: 1.5 },
{ kind: "Lemon", qty: 1 },
{ kind: "Simple Syrup", qty: 0.5 },
{ kind: "Soda", qty: 2 },
{ kind: "Angostura", qty: "dash" },
],
garnish: "Maraschino Cherry",
served: "Tall",
},
Manhattan: {
ingredients: [
{ kind: "Rye", qty: 2.5 },
{ kind: "Sweet Red Vermouth", qty: 1 },
{ kind: "Angostura", qty: "dash" },
],
garnish: "Maraschino Cherry",
served: "Straight Up",
},
}
}
Output (JSON)
{
"cocktails": {

"Tom Collins": {
"ingredients": [
{ "kind": "Farmers Gin", "qty": 1.5 },
{ "kind": "Lemon", "qty": 1 },
{ "kind": "Simple Syrup", "qty": 0.5 },
{ "kind": "Soda", "qty": 2 },
{ "kind": "Angostura", "qty": "dash" }
],
"garnish": "Maraschino Cherry",
"served": "Tall"
},
"Manhattan": {
"ingredients": [
{ "kind": "Rye", "qty": 2.5 },
{ "kind": "Sweet Red Vermouth", "qty": 1 },
{ "kind": "Angostura", "qty": "dash" }
],
"garnish": "Maraschino Cherry",
"served": "Straight Up"
}
}
}
Demo of PHP
    JsonNet::evaluateFile('bar_menu.1.jsonnet');

$Snippet = '
{
cocktails: {
// Ingredient quantities are in fluid ounces.
"Tom Collins": {
ingredients: [
{ kind: "Farmers Gin", qty: 1.5 },
{ kind: "Lemon", qty: 1 },
{ kind: "Simple Syrup", qty: 0.5 },
{ kind: "Soda", qty: 2 },
{ kind: "Angostura", qty: "dash" },
],
garnish: "Maraschino Cherry",
served: "Tall",
},
Manhattan: {
ingredients: [
{ kind: "Rye", qty: 2.5 },
{ kind: "Sweet Red Vermouth", qty: 1 },
{ kind: "Angostura", qty: "dash" },
],
garnish: "Maraschino Cherry",
served: "Straight Up",
},
}
}
';

var_dump(JsonNet::evaluateSnippet($Snippet));
安装请参考我的实践文章:http://www.openskill.cn/article/373
 
项目地址


Github:https://github.com/Neeke/Jsonnet-PHP
Pecl:  http://pecl.php.net/package/jsonnet 
Gitosc:  http://git.oschina.net/ciogao/Jsonnet-PHP


开源Mysql自动补全、语法高亮客户端Mycli

开源项目chris 发表了文章 • 0 个评论 • 1261 次浏览 • 2016-05-30 20:38 • 来自相关话题

介绍:MyCli是一个MySQL的命令行客户端,可以实现自动补全(auto-completion)和语法高亮,同时也可应用于MariaDB和Percona。
 
功能特征:
[]MyCli使用Python Prompt Toolkit编写。[/][]支持语法高亮[/][]当你输入SQL关键字,数据库的表格和列时可自动补全。[/][]智能补全(默认启用),会提示文本感应的(context-sensitive)补全。[/][]配置文件在第一次启动时,自动创建在~/.myclirc[/]
 
安装:
兼容性:
OS X和Linux上测试过。运行在Python 2.6,2.6,3.3,3.4和3.5。能够很好地处理unicode输入/输出。
 
Python Package:
$ pip install mycli

or

$ easy_install mycli
 Mac OS X:
最简单的方法在OS X机器安装mycli是使用homebrew
$ brew update && brew install mycliLinux:
Debian/Ubuntu Package:
mycli托管在debian软件包packagecloud.io.
添加gpg密钥packagecloud包验证。
$ curl https://packagecloud.io/gpg.key | apt-key add -安装apt-transport-https包,支持apt使用https下载包
$ apt-get install -y apt-transport-https添加mycli安装源
$ echo "deb https://packagecloud.io/amjith/mycli/ubuntu/ trusty main" | sudo tee -a /etc/apt/sources.list更新mycli的安装源,然后安装mycli
$ sudo apt-get update
$ sudo apt-get install mycli现在使用sudo apt-get upgrade mycli很容易使mycli升级!
 
RHEL, Centos, Fedora:
我还没有为mycli构建RPM包。所以请使用pip安装mycli。你可以在你的系统上安装pip使用:
$ sudo yum install python-pip python-devel一旦安装pip,您可以如下安装mycli:
$ sudo pip install mycli
效果图:
自动补全
简单的完成如关键字和sql函数。




 
智能提示
Table name completions after the 'FROM' keyword.
 




列名中引用的表的查询范围




 
别名支持
列完成将即使工作表名称别名。




 
语法高亮显示
sql的语法高亮显示。




 
pager
一个sql命令的输出是通过更少的命令自动输送。




 
动态效果图如下:




 

项目官网:http://mycli.net/
开源地址:https://github.com/dbcli/mycli 查看全部
介绍:MyCli是一个MySQL的命令行客户端,可以实现自动补全(auto-completion)和语法高亮,同时也可应用于MariaDB和Percona。
 
功能特征:
    []MyCli使用Python Prompt Toolkit编写。[/][]支持语法高亮[/][]当你输入SQL关键字,数据库的表格和列时可自动补全。[/][]智能补全(默认启用),会提示文本感应的(context-sensitive)补全。[/][]配置文件在第一次启动时,自动创建在~/.myclirc[/]

 
安装:
兼容性:
OS X和Linux上测试过。运行在Python 2.6,2.6,3.3,3.4和3.5。能够很好地处理unicode输入/输出。
 
Python Package:
$ pip install mycli

or

$ easy_install mycli

 Mac OS X:
最简单的方法在OS X机器安装mycli是使用homebrew
$ brew update && brew install mycli
Linux:
Debian/Ubuntu Package:
mycli托管在debian软件包packagecloud.io.
添加gpg密钥packagecloud包验证。
 $ curl https://packagecloud.io/gpg.key | apt-key add -
安装apt-transport-https包,支持apt使用https下载包
$ apt-get install -y apt-transport-https
添加mycli安装源
$ echo "deb https://packagecloud.io/amjith/mycli/ubuntu/ trusty main" | sudo tee -a /etc/apt/sources.list
更新mycli的安装源,然后安装mycli
$ sudo apt-get update
$ sudo apt-get install mycli
现在使用sudo apt-get upgrade mycli很容易使mycli升级!
 
RHEL, Centos, Fedora:
我还没有为mycli构建RPM包。所以请使用pip安装mycli。你可以在你的系统上安装pip使用:
$ sudo yum install python-pip python-devel
一旦安装pip,您可以如下安装mycli:
$ sudo pip install mycli

效果图:
自动补全
简单的完成如关键字和sql函数。
t1.png

 
智能提示
Table name completions after the 'FROM' keyword.
 
t2.png

列名中引用的表的查询范围
t3.png

 
别名支持
列完成将即使工作表名称别名。
t4.png

 
语法高亮显示
sql的语法高亮显示。
t5.png

 
pager
一个sql命令的输出是通过更少的命令自动输送。
t6.png

 
动态效果图如下:
dt.gif

 


项目官网:http://mycli.net/
开源地址:https://github.com/dbcli/mycli


商业级开源虚拟化管理平台OVM

开源项目采菊篱下 发表了文章 • 0 个评论 • 1413 次浏览 • 2016-04-26 20:44 • 来自相关话题

开源的虚拟化管理平台也有很多,比如OpenStack、Cloudstack OpenNebula、oVirt/RHEV、ZStack等,为什么还要自行研发开发呢,因为这些都不够简单和易用,功能不够全面。而OVM得出发点就是简单、易玩!

经历了一年来一个虚拟化的开源管理平台OVM-(Open Virtual Manager )终于诞生了。OVM作为开源虚拟化管理平台以做最好用的虚拟化管理平台为目标。面向中小型虚拟化环境,打造简单易用的虚拟化和管理平台。 让零基础的用户在几个小时内可以部署、使用自己的虚拟化系统。主要特性就是简单、易部署。
 
具体的安装下载参考:http://www.openvirtmanager.org/install.html​ 
 
下面就让我们来体验初恋般的感觉,OVM具有魅力,我们可以怎么使用?!!!
 
一、使用Web客户端登录OVM
OVM安装配置完成后,您可以使用FireFox浏览器或Google浏览器访问OVM用户界面。
前提条件:
          您必须具有在系统配置期间创建的系统管理员用户名和密码(系统默认用户名为admin、默认密码为password。
步骤:
[]打开Web 浏览器,并导航到http://管理平台ip[/][]输入系统管理员用户名和密码(系统默认为admin、password),并单击登录。[/]




OVM将带您进入到虚拟化与云的世界。
 
二、新建数据中心
[]OVM数据中心支持管理私有的数据中心和公有云资源。[/][]OVM通过远程服务模块管理数据中心和公有云。[/]




新建数据中心步骤:
1、选择添加内部虚拟中心,弹出对话框,由于各个组件使用all-in-one安装,所以输入管理平台IP,重复IP,免除重复操作。




2、检查所有IP,如果安装没有问题,检查会顺利通过。




3、点击保存,内部数据中心建立完毕。




 
三、新建服务器资源池
服务器池是物理主机的主要容器,通常要把主机(即物理服务器)添加到服务器池。

数据中心可包含多个服务器池,一般全国性的集团公司或跨国公司会使用多个服务器池来表示企业内的组织结构。

服务器池的对象可以交互,但不同服务器池的交互则会受到限制。例如:您可以使用OVM迁移技术在一个服务器池内的主机之间迁移虚拟机,但不可以将虚拟机迁移到另一个服务器池的主机上。
新建服务器资源池步骤:
1、选择数据中心—主机,建立资源池:




 2、输入资源池名称,描述点击保存,资源池建立完毕。





四、为服务器资源池设置分配策略
点击数据中心—资源分配,可以为虚拟资源进行配置负载均衡策略,合理调度虚拟资源,提高虚拟机性能。




 
五、添加主机1、请确保你已经安装了OVM节点主机;
2、选择建立好的资源池,添加主机




3、选择相应的Hypervisor,添加计算节点的IP,点击保存。








4、在新的弹框中在数据存储选择共享NFS存储,网络接口进行选择,之后保存,主机添加成功。












 
六、主机管理
选择编辑主机,可对主机资源进行管理或修改,如主机环境有问题,可以进行操作此项。




 
七、创建虚拟数据中心
 1、 选择主菜单栏虚拟数据中心—虚拟数据中心,点击+号添加




2、填写名称,选择相应数据中心和Hypervisor。




3、点击保存,虚拟数据中心添加成功。




 
八、创建vApp
1、选择主菜单栏虚拟数据中心—vApp,点击+号,填写名称。




2、点击保存,vApp添加成功




 
九、通过ISO新建VM
 1、选择主菜单栏应用商店,上传ISO。




2、上传ISO后 ,进入虚拟数据中心的vApp,在ISO选项中创建虚拟机,创建过程中可以进行资源配置建立。












更多详情和项目进度可以关注官网:http://www.openvirtmanager.org/  和官网社区! 查看全部
开源的虚拟化管理平台也有很多,比如OpenStack、Cloudstack OpenNebula、oVirt/RHEV、ZStack等,为什么还要自行研发开发呢,因为这些都不够简单和易用,功能不够全面。而OVM得出发点就是简单、易玩!

经历了一年来一个虚拟化的开源管理平台OVM-(Open Virtual Manager )终于诞生了。OVM作为开源虚拟化管理平台以做最好用的虚拟化管理平台为目标。面向中小型虚拟化环境,打造简单易用的虚拟化和管理平台。 让零基础的用户在几个小时内可以部署、使用自己的虚拟化系统。主要特性就是简单、易部署。
 
具体的安装下载参考:http://www.openvirtmanager.org/install.html​ 
 
下面就让我们来体验初恋般的感觉,OVM具有魅力,我们可以怎么使用?!!!
 
一、使用Web客户端登录OVM
OVM安装配置完成后,您可以使用FireFox浏览器或Google浏览器访问OVM用户界面。
前提条件:
          您必须具有在系统配置期间创建的系统管理员用户名和密码(系统默认用户名为admin、默认密码为password。
步骤:
    []打开Web 浏览器,并导航到http://管理平台ip[/][]输入系统管理员用户名和密码(系统默认为admin、password),并单击登录。[/]

image001.png

OVM将带您进入到虚拟化与云的世界。
 
二、新建数据中心
    []OVM数据中心支持管理私有的数据中心和公有云资源。[/][]OVM通过远程服务模块管理数据中心和公有云。[/]

image005.png

新建数据中心步骤:
1、选择添加内部虚拟中心,弹出对话框,由于各个组件使用all-in-one安装,所以输入管理平台IP,重复IP,免除重复操作。
image006.png

2、检查所有IP,如果安装没有问题,检查会顺利通过。
image007.png

3、点击保存,内部数据中心建立完毕。
imag8.png

 
三、新建服务器资源池
服务器池是物理主机的主要容器,通常要把主机(即物理服务器)添加到服务器池。

数据中心可包含多个服务器池,一般全国性的集团公司或跨国公司会使用多个服务器池来表示企业内的组织结构。

服务器池的对象可以交互,但不同服务器池的交互则会受到限制。例如:您可以使用OVM迁移技术在一个服务器池内的主机之间迁移虚拟机,但不可以将虚拟机迁移到另一个服务器池的主机上。
新建服务器资源池步骤:
1、选择数据中心—主机,建立资源池:
image009.png

 2、输入资源池名称,描述点击保存,资源池建立完毕。
image010.png


四、为服务器资源池设置分配策略
点击数据中心—资源分配,可以为虚拟资源进行配置负载均衡策略,合理调度虚拟资源,提高虚拟机性能。
image011.png

 
五、添加主机1、请确保你已经安装了OVM节点主机;
2、选择建立好的资源池,添加主机
image012.png

3、选择相应的Hypervisor,添加计算节点的IP,点击保存。
image013.png

image014.png

4、在新的弹框中在数据存储选择共享NFS存储,网络接口进行选择,之后保存,主机添加成功。
image015.png

image016.png

image017.png

 
六、主机管理
选择编辑主机,可对主机资源进行管理或修改,如主机环境有问题,可以进行操作此项。
image018.png

 
七、创建虚拟数据中心
 1、 选择主菜单栏虚拟数据中心—虚拟数据中心,点击+号添加
image019.png

2、填写名称,选择相应数据中心和Hypervisor。
image020.png

3、点击保存,虚拟数据中心添加成功。
image021.png

 
八、创建vApp
1、选择主菜单栏虚拟数据中心—vApp,点击+号,填写名称。
image022.png

2、点击保存,vApp添加成功
image023.png

 
九、通过ISO新建VM
 1、选择主菜单栏应用商店,上传ISO。
image024.png

2、上传ISO后 ,进入虚拟数据中心的vApp,在ISO选项中创建虚拟机,创建过程中可以进行资源配置建立。
image025.png

image026.png

image027.png

更多详情和项目进度可以关注官网:http://www.openvirtmanager.org/  和官网社区!

开源管理的Saltstack Web UI(持续更新)

开源项目koyo 发表了文章 • 0 个评论 • 2116 次浏览 • 2016-04-24 23:33 • 来自相关话题

项目名称:dzhops
[]使用Django框架开发的Salt Stack Web UI[/][]开发语言: python;[/][]后端框架: Django;[/][]前端框架:bootstrap/jquery;[/][]这个项目最初是我个人爱好,不过后来发现,确实能解决目前SaltStack在命令行模式下的部分缺陷;所以,现在公司已经开始在生产使用,这也直接带来一个问题,关于这套系统是否继续开源的思考;[/]
 
环境:
[]RHEL 6.5 x86_64[/][]salt-master 2015.5.3[/][]salt-minion 2015.5.3[/][]salt-api 2015.5.3[/][]Django 1.6.8[/][]python 2.6.6[/][]MySQL 5.5[/][]网卡流量图使用rrdtool(v1.3.8)工具[/]
 
dzhops更新记录:
[]> SaltStack相关功能(部署、更新、维护、远程)代码重构;[/][]> 视图文件拆分,新建立app:saltstack/record/managekeys;[/][]> 使用json格式通过接口传递数据,提高代码重用率;[/][]> 远程操作的jid及返回结果相关信息入库;[/][]> 对返回结果按IP进行排序;[/][]> 返回结果展示按钮增加上下距离;[/][]> 前端各选项左右对齐;[/][]> 远程命令执行返回结果显示优化;[/][]> 取消网卡流量监控;[/]
 
功能介绍
1.登陆页面 




2.首页,显示SaltMaster所在服务器及相关组件状态信息 目前监控数据,都是通过独立的信息采集脚本完成,需要做计划任务。 




3.主机列表 进入主机列表界面,可以选择机房和维护人员,使用ajax处理,每次选择会从库中重新查询符合条件的数据; 这些服务器相关的信息支持自动采集,由于目前写的方法只能完成采集任务,所以并没有将链接放出来,不过可以通过访问指定链接进行访问。 




4.SaltStack 可完成如下功能:
[]服务器初始化(如模块部署等)[/][]程序、配置更新[/][]日常维护操作[/][]远程命令执行 当对Minion执行操作时,会记录本次目标Minion的数量,然后与返回结果的Minion数量进行对比,找出哪些没有返回结果;当接收到返回结果后,使用bootstrap的模态框显示结果,其中蓝色表示执行成功,红色表示有失败存在,可以点击标签查看详细情况;[/]












5.MinionKeys管理 可以分别选择已接受、待接受、已拒绝,并且可以选择机房及维护人员,进行对应的管理操作; 




6.操作记录 可以记录每次操作执行人的账号、操作、目标、及jid,并可以通过jid查看该次操作的返回结果详细情况。








更多详情可以访问项目开源地址:https://github.com/Hasal/dzhops 查看全部
项目名称:dzhops
    []使用Django框架开发的Salt Stack Web UI[/][]开发语言: python;[/][]后端框架: Django;[/][]前端框架:bootstrap/jquery;[/][]这个项目最初是我个人爱好,不过后来发现,确实能解决目前SaltStack在命令行模式下的部分缺陷;所以,现在公司已经开始在生产使用,这也直接带来一个问题,关于这套系统是否继续开源的思考;[/]

 
环境:
    []RHEL 6.5 x86_64[/][]salt-master 2015.5.3[/][]salt-minion 2015.5.3[/][]salt-api 2015.5.3[/][]Django 1.6.8[/][]python 2.6.6[/][]MySQL 5.5[/][]网卡流量图使用rrdtool(v1.3.8)工具[/]

 
dzhops更新记录:
    []> SaltStack相关功能(部署、更新、维护、远程)代码重构;[/][]> 视图文件拆分,新建立app:saltstack/record/managekeys;[/][]> 使用json格式通过接口传递数据,提高代码重用率;[/][]> 远程操作的jid及返回结果相关信息入库;[/][]> 对返回结果按IP进行排序;[/][]> 返回结果展示按钮增加上下距离;[/][]> 前端各选项左右对齐;[/][]> 远程命令执行返回结果显示优化;[/][]> 取消网卡流量监控;[/]

 
功能介绍
1.登陆页面 
login.png

2.首页,显示SaltMaster所在服务器及相关组件状态信息 目前监控数据,都是通过独立的信息采集脚本完成,需要做计划任务。 
index.png

3.主机列表 进入主机列表界面,可以选择机房和维护人员,使用ajax处理,每次选择会从库中重新查询符合条件的数据; 这些服务器相关的信息支持自动采集,由于目前写的方法只能完成采集任务,所以并没有将链接放出来,不过可以通过访问指定链接进行访问。 
asset.png

4.SaltStack 可完成如下功能:
    []服务器初始化(如模块部署等)[/][]程序、配置更新[/][]日常维护操作[/][]远程命令执行 当对Minion执行操作时,会记录本次目标Minion的数量,然后与返回结果的Minion数量进行对比,找出哪些没有返回结果;当接收到返回结果后,使用bootstrap的模态框显示结果,其中蓝色表示执行成功,红色表示有失败存在,可以点击标签查看详细情况;[/]

deploy.png

deploy_show.png

deploy_show_success.png

5.MinionKeys管理 可以分别选择已接受、待接受、已拒绝,并且可以选择机房及维护人员,进行对应的管理操作; 
manage.png

6.操作记录 可以记录每次操作执行人的账号、操作、目标、及jid,并可以通过jid查看该次操作的返回结果详细情况。
record.png

record_detail.png

更多详情可以访问项目开源地址:https://github.com/Hasal/dzhops

LinkedIn开源Hadoop/Spark性能监控调优工具Dr. Elephant

运维技术koyo 发表了文章 • 0 个评论 • 1148 次浏览 • 2016-04-18 23:12 • 来自相关话题

本文来源于全球最大的职业社交网站LinkedIn领英,文章版权归作者本人所有。
 
今天LinkedIn宣布开源Dr. Elephant,Dr. Elephant能够很好地帮助用户理解、分析和优化Hadoop和Spark的工作流。LinkedIn在去年第八届Hadoop Summit上第一次在社区呈现。

动机​
Hadoop是一个分布式数据存储和大数据处理框架,体量大、组件复杂,因而每个组件的性能优化就显得异常重要。在优化底层硬件资源,网络架构,OS和其它堆栈的同时,也需要对集群上运行的任务进行优化。
 
什么是Dr. Elephant?
Dr. Elephant是一个Hadoop 和Spark的性能监控和调优工具。Dr. Elephant能自动化收集所有指标,进行数据分析,并以简单易用的方式进行呈现。Dr. Elephant的目标是提高开发人员的开发效率和增加集群任务调试的高效性。Dr. Elephant支持对Hadoop和Spark任务进行可插拔式、配置化以及基于规则的启发式job性能分析,并且根据分析结果给出合适的建议来指导如何调优使任务更有效率。
 
为什么选择Dr. Elephant?
其它开源或者商用Hadoop优化工具都是收集系统资源指标和监控集群资源信息,关注点仅在于简化Hadoop集群的发布和管理,而很少有工具是来帮助Hadoop优化任务流。这些工具不支持Hadoop集群的规模化和Hadoop框架的增长,而Dr. Elephant支持Hadoop生态的各种框架,并且很容易的扩展到新的框架,已经支持Spark。Dr. Elephant让用户更清晰的掌握Hadoop和Spark原理,并帮助其轻松的优化任务。
 
Dr. Elephant如何工作?
Dr. Elephant从YARN Resource Manager周期性获取所有最近运行成功和失败的应用列表,然后从Job History Server中攫取每个应用的元数据,包括job counters、任务配置和任务数据。有了元数据后,Dr. Elephant进行启发式分析,并生成每个任务的诊断报告,从而进行相应的整体优化。Dr. Elephant将会标记出五个等级问题严重性,指出潜在的性能问题。




图1 Dr. Elephant问题等级




图2 Dr. Elephant的面板
 
通过Dr. Elephant的UI查看数据面板,见图2,这里显示集群的相关统计信息,包括集群上运行的任务数,需要优化的任务数,以及基于启发式分析发现的严重任务数。图中是最近24小时的Dr. Elephant分析的所有最近的任务。




图3 Dr. Elephant的搜索页
 
Dr. Elephant提供一个搜索功能,帮助用户通过任务ID/应用ID,执行ID,任务类型,任务严重程度和任务完成时间等来搜索任务。




图4 Dr. Elephant任务页面
 
当你点击指定的搜索结果,会显示完整的任务信息,并能查看相互引用的任务流。




图5 Dr. Elephant的工作流历史




图6 Dr. Elephant的任务历史
 
Dr. Elephant的任务历史和工作流历史可以帮用户比较前后执行的区别。Dr. Elephant通过启发式计算出每个任务执行的性能得分并作图。这个图表可以帮助用户很直观的分析哪个性能好。
 
家庭医生
Dr. Elephant在LinkedIn非常受欢迎,大家钟爱其简洁性。Dr. Elephant通过简单的诊断可以解决百分之八十的问题。Dr. Elephant提供任务级别的建议帮助用户去理解和优化Hadoop工作流。

Dr. Elephant已经完全和Hadoop生态整合。在LinkedIn,开发人员使用Dr. Elephant作为开发流程的一部分,线上任务强制达到绿色级别。

分享阅读中文原文:https://www.infoq.com/cn/news/2016/04/Dr-Elephant-LinkedIn
分享于都英文原文:https://engineering.linkedin.com/blog/2016/04/dr-elephant-open-source-self-serve-performance-tuning-hadoop-spark 查看全部
本文来源于全球最大的职业社交网站LinkedIn领英,文章版权归作者本人所有。
 
今天LinkedIn宣布开源Dr. Elephant,Dr. Elephant能够很好地帮助用户理解、分析和优化Hadoop和Spark的工作流。LinkedIn在去年第八届Hadoop Summit上第一次在社区呈现。

动机​
Hadoop是一个分布式数据存储和大数据处理框架,体量大、组件复杂,因而每个组件的性能优化就显得异常重要。在优化底层硬件资源,网络架构,OS和其它堆栈的同时,也需要对集群上运行的任务进行优化。
 
什么是Dr. Elephant?
Dr. Elephant是一个Hadoop 和Spark的性能监控和调优工具。Dr. Elephant能自动化收集所有指标,进行数据分析,并以简单易用的方式进行呈现。Dr. Elephant的目标是提高开发人员的开发效率和增加集群任务调试的高效性。Dr. Elephant支持对Hadoop和Spark任务进行可插拔式、配置化以及基于规则的启发式job性能分析,并且根据分析结果给出合适的建议来指导如何调优使任务更有效率。
 
为什么选择Dr. Elephant?
其它开源或者商用Hadoop优化工具都是收集系统资源指标和监控集群资源信息,关注点仅在于简化Hadoop集群的发布和管理,而很少有工具是来帮助Hadoop优化任务流。这些工具不支持Hadoop集群的规模化和Hadoop框架的增长,而Dr. Elephant支持Hadoop生态的各种框架,并且很容易的扩展到新的框架,已经支持Spark。Dr. Elephant让用户更清晰的掌握Hadoop和Spark原理,并帮助其轻松的优化任务。
 
Dr. Elephant如何工作?
Dr. Elephant从YARN Resource Manager周期性获取所有最近运行成功和失败的应用列表,然后从Job History Server中攫取每个应用的元数据,包括job counters、任务配置和任务数据。有了元数据后,Dr. Elephant进行启发式分析,并生成每个任务的诊断报告,从而进行相应的整体优化。Dr. Elephant将会标记出五个等级问题严重性,指出潜在的性能问题。
Elephant.png

图1 Dr. Elephant问题等级
Elephant2.png

图2 Dr. Elephant的面板
 
通过Dr. Elephant的UI查看数据面板,见图2,这里显示集群的相关统计信息,包括集群上运行的任务数,需要优化的任务数,以及基于启发式分析发现的严重任务数。图中是最近24小时的Dr. Elephant分析的所有最近的任务。
Elephant3.png

图3 Dr. Elephant的搜索页
 
Dr. Elephant提供一个搜索功能,帮助用户通过任务ID/应用ID,执行ID,任务类型,任务严重程度和任务完成时间等来搜索任务。
Elephant4.png

图4 Dr. Elephant任务页面
 
当你点击指定的搜索结果,会显示完整的任务信息,并能查看相互引用的任务流。
Elephant5.png

图5 Dr. Elephant的工作流历史
Elephant6.png

图6 Dr. Elephant的任务历史
 
Dr. Elephant的任务历史和工作流历史可以帮用户比较前后执行的区别。Dr. Elephant通过启发式计算出每个任务执行的性能得分并作图。这个图表可以帮助用户很直观的分析哪个性能好。
 
家庭医生
Dr. Elephant在LinkedIn非常受欢迎,大家钟爱其简洁性。Dr. Elephant通过简单的诊断可以解决百分之八十的问题。Dr. Elephant提供任务级别的建议帮助用户去理解和优化Hadoop工作流。

Dr. Elephant已经完全和Hadoop生态整合。在LinkedIn,开发人员使用Dr. Elephant作为开发流程的一部分,线上任务强制达到绿色级别。


分享阅读中文原文:https://www.infoq.com/cn/news/2016/04/Dr-Elephant-LinkedIn
分享于都英文原文:https://engineering.linkedin.com/blog/2016/04/dr-elephant-open-source-self-serve-performance-tuning-hadoop-spark


开源运维管理平台OpsSam

开源项目koyo 发表了文章 • 0 个评论 • 2520 次浏览 • 2016-04-18 13:58 • 来自相关话题

基于saltstack、cobbler和zabbix接口的集成管理开源运维平台
一、基本环境​
os: Centos 6.6 x86_64
python: 2.6.6
 
二、依赖关系
1、python依赖包pip install -r requirements.txt2、epel源rpm安装包mysql-5.5.19
subversion-1.6.11-10
rabbitmq-server-3.1.5-1
cobbler-2.6.3-13、其他接口a)cobbler服务器
cobbler-2.6.3-1.el6.noarch
cobbler-web-2.6.3-1.el6.noarch

b)saltstack服务器
salt 2014.7.2
salt-api-2014.7.2

c)svn服务器
subversion-1.6.11-114、启动数据库a)创建登陆用户
/etc/init.d/mysqld start
mysqladmin -uroot password opsSAM

b)创建数据库:
mysql -uroot -popsSAM -e "create database opsSAM;"

c)生成项目数据表:
cd /your/sitepath/
python manage.py syncdb

d)创建初始登陆用户admin(密码admin):
mysql -uroot -popsSAM -e "insert into opsSAM.opsSAM_users(username,password,admin) values ('admin','f313176847fcc0c82dae8e51e0e40b1d33ec7f0fabf279c164f8541ec99f8a06f473b3b1439a41a898aa2f70f076a59bb671e17bed52471cb9adfee9701a7fb5','是');"5、设置djangoopsSAM.opsSAM.settings.py
opsSAM.opsSAM.settings_local.py
 三、django生产环境安装(非必须)
推荐nginx+uwsgi(略)
安装后按照实际情况修改scripts/supervisord.conf相关django配置[program:django]

command=/usr/bin/python /your/sitepath/opsSAM/manage.py runserver 0.0.0.0:80
 四、启动cp scripts/supervisord.conf /etc/
cp scripts/supervisord /etc/init.d/
chmod 755 /etc/init.d/supervisord
/etc/init.d/supervisord start
五、访问地址
opsSAM前台: http://your_ip/
opsSAM后台: http://your_ip/admin
rabbitmq: http://your_ip:15672/
celery flower: http://your_ip:5555/
supervisor: http://your_ip:9001/
 
六、Demo效果图
























项目地址:https://github.com/MorningSong/opsSAM 查看全部
基于saltstack、cobbler和zabbix接口的集成管理开源运维平台
一、基本环境​
os: Centos 6.6 x86_64
python: 2.6.6
 
二、依赖关系
1、python依赖包
pip install -r requirements.txt
2、epel源rpm安装包
mysql-5.5.19
subversion-1.6.11-10
rabbitmq-server-3.1.5-1
cobbler-2.6.3-1
3、其他接口
a)cobbler服务器
cobbler-2.6.3-1.el6.noarch
cobbler-web-2.6.3-1.el6.noarch

b)saltstack服务器
salt 2014.7.2
salt-api-2014.7.2

c)svn服务器
subversion-1.6.11-11
4、启动数据库
a)创建登陆用户
/etc/init.d/mysqld start
mysqladmin -uroot password opsSAM

b)创建数据库:
mysql -uroot -popsSAM -e "create database opsSAM;"

c)生成项目数据表:
cd /your/sitepath/
python manage.py syncdb

d)创建初始登陆用户admin(密码admin):
mysql -uroot -popsSAM -e "insert into opsSAM.opsSAM_users(username,password,admin) values ('admin','f313176847fcc0c82dae8e51e0e40b1d33ec7f0fabf279c164f8541ec99f8a06f473b3b1439a41a898aa2f70f076a59bb671e17bed52471cb9adfee9701a7fb5','是');"
5、设置django
opsSAM.opsSAM.settings.py
opsSAM.opsSAM.settings_local.py

 三、django生产环境安装(非必须)
推荐nginx+uwsgi(略)
安装后按照实际情况修改scripts/supervisord.conf相关django配置
[program:django]

command=/usr/bin/python /your/sitepath/opsSAM/manage.py runserver 0.0.0.0:80

 四、启动
cp scripts/supervisord.conf /etc/
cp scripts/supervisord /etc/init.d/
chmod 755 /etc/init.d/supervisord
/etc/init.d/supervisord start

五、访问地址
opsSAM前台: http://your_ip/
opsSAM后台: http://your_ip/admin
rabbitmq: http://your_ip:15672/
celery flower: http://your_ip:5555/
supervisor: http://your_ip:9001/
 
六、Demo效果图
login.png

index.jpg

system_install.png

exec_command.png

deploy_app.png

deploy_code.png

项目地址:https://github.com/MorningSong/opsSAM

开源分布式数据库Mysql中间件Mycat

开源项目chris 发表了文章 • 1 个评论 • 2738 次浏览 • 2016-01-09 19:54 • 来自相关话题

什么是MYCAT

[]一个彻底开源的,面向企业应用开发的大数据库集群[/][]支持事务、ACID、可以替代MySQL的加强版数据库[/][]一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群[/][]一个融合内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server[/][]结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品[/][]一个新颖的数据库中间件产品[/]

Mycat特性

[]支持SQL92标准[/][]遵守Mysql原生协议,跨语言,跨数据库的通用中间件代理。[/][]基于心跳的自动故障切换,支持读写分离,支持MySQL主从,以及galera cluster。[/][]支持Galera for MySQL集群,Percona Cluster或者MariaDB cluster[/][]基于Nio实现,有效管理线程,高并发问题。[/][]支持数据的多片自动路由与聚合,支持sum,count,max等常用的聚合函数。[/][]支持2表join,甚至基于caltlet的多表join。[/][]支持通过全局表,ER关系的分片策略,实现了高效的多表join查询。[/][]支持多租户方案。[/][]支持分布式事务(弱xa)。[/][]支持全局序列号,解决分布式下的主键生成问题。[/][]分片规则丰富,插件化开发,易于扩展。[/][]强大的web,命令行监控。[/][]支持前端作为mysq通用代理,后端JDBC方式支持Oracle、DB2、SQL Server 、 mongodb 、巨杉。[/][]支持密码加密[/][]支持IP白名单[/][]支持SQL黑名单、sql注入攻击拦截[/][]集群基于ZooKeeper管理,在线升级,扩容,智能优化,大数据处理(2.0开发版)。[/]

Mycat架构






Mycat高可用方案


















Mycat监控

[]支持对Mycat、Mysql性能监控[/][]支持对Mycat的JVM内存提供监控服务[/][]支持对线程的监控[/][]支持对操作系统的CPU、内存、磁盘、网络的监控[/]









目标

低成本的将现有的单机数据库和应用平滑迁移到“云”端,解决数据存储和业务规模迅速增长情况下的数据瓶颈问题。
1.5版本架构





长期规划2.0

[]完全实现分布式事务,完全的支持分布式。[/][]通过Mycat web(eye)完成可视化配置,及智能监控,自动运维。[/][]通过mysql 本地节点,完整的解决数据扩容难度,实现自动扩容机制,解决扩容难点。[/][]支持基于zookeeper的主从切换及Mycat集群化管理。[/][]通过Mycat Balance 替代第三方的Haproxy,LVS等第三方高可用,完整的兼容Mycat集群节点的动态上下线。[/][]接入Spark等第三方工具,解决数据分析及大数据聚合的业务场景。[/][]通过Mycat智能优化,分析分片热点,提供合理的分片建议,索引建议,及数据切分实时业务建议。[/]

优势

基于阿里开源的Cobar产品而研发,Cobar的稳定性、可靠性、优秀的架构和性能以及众多成熟的使用案例使得MYCAT一开始就拥有一个很好的起点,站在巨人的肩膀上,我们能看到更远。业界优秀的开源项目和创新思路被广泛融入到MYCAT的基因中,使得MYCAT在很多方面都领先于目前其他一些同类的开源项目,甚至超越某些商业产品。
MYCAT背后有一支强大的技术团队,其参与者都是5年以上资深软件工程师、架构师、DBA等,优秀的技术团队保证了MYCAT的产品质量。
MYCAT并不依托于任何一个商业公司,因此不像某些开源项目,将一些重要的特性封闭在其商业产品中,使得开源项目成了一个摆设。

Mycat关注

老外都开始关注Mycat了!





Mycat官方论坛:http://i.mycat.io/forum.php
Mycat Github:https://github.com/MyCATApache
Mycat权威指南第一版_V1.5.1:http://pan.baidu.com/s/1i3SFOpf 查看全部


什么是MYCAT


    []一个彻底开源的,面向企业应用开发的大数据库集群[/][]支持事务、ACID、可以替代MySQL的加强版数据库[/][]一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群[/][]一个融合内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server[/][]结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品[/][]一个新颖的数据库中间件产品[/]


Mycat特性


    []支持SQL92标准[/][]遵守Mysql原生协议,跨语言,跨数据库的通用中间件代理。[/][]基于心跳的自动故障切换,支持读写分离,支持MySQL主从,以及galera cluster。[/][]支持Galera for MySQL集群,Percona Cluster或者MariaDB cluster[/][]基于Nio实现,有效管理线程,高并发问题。[/][]支持数据的多片自动路由与聚合,支持sum,count,max等常用的聚合函数。[/][]支持2表join,甚至基于caltlet的多表join。[/][]支持通过全局表,ER关系的分片策略,实现了高效的多表join查询。[/][]支持多租户方案。[/][]支持分布式事务(弱xa)。[/][]支持全局序列号,解决分布式下的主键生成问题。[/][]分片规则丰富,插件化开发,易于扩展。[/][]强大的web,命令行监控。[/][]支持前端作为mysq通用代理,后端JDBC方式支持Oracle、DB2、SQL Server 、 mongodb 、巨杉。[/][]支持密码加密[/][]支持IP白名单[/][]支持SQL黑名单、sql注入攻击拦截[/][]集群基于ZooKeeper管理,在线升级,扩容,智能优化,大数据处理(2.0开发版)。[/]


Mycat架构


mycat_arch.png


Mycat高可用方案


mysql_ha1.png

mysql_ha2.png

mysql_ha3.png

mycat_ha4.png


Mycat监控


    []支持对Mycat、Mysql性能监控[/][]支持对Mycat的JVM内存提供监控服务[/][]支持对线程的监控[/][]支持对操作系统的CPU、内存、磁盘、网络的监控[/]

mycateye1.png

mycateye2.png


目标


低成本的将现有的单机数据库和应用平滑迁移到“云”端,解决数据存储和业务规模迅速增长情况下的数据瓶颈问题。
1.5版本架构
mycat2_0.png


长期规划2.0


    []完全实现分布式事务,完全的支持分布式。[/][]通过Mycat web(eye)完成可视化配置,及智能监控,自动运维。[/][]通过mysql 本地节点,完整的解决数据扩容难度,实现自动扩容机制,解决扩容难点。[/][]支持基于zookeeper的主从切换及Mycat集群化管理。[/][]通过Mycat Balance 替代第三方的Haproxy,LVS等第三方高可用,完整的兼容Mycat集群节点的动态上下线。[/][]接入Spark等第三方工具,解决数据分析及大数据聚合的业务场景。[/][]通过Mycat智能优化,分析分片热点,提供合理的分片建议,索引建议,及数据切分实时业务建议。[/]


优势


基于阿里开源的Cobar产品而研发,Cobar的稳定性、可靠性、优秀的架构和性能以及众多成熟的使用案例使得MYCAT一开始就拥有一个很好的起点,站在巨人的肩膀上,我们能看到更远。业界优秀的开源项目和创新思路被广泛融入到MYCAT的基因中,使得MYCAT在很多方面都领先于目前其他一些同类的开源项目,甚至超越某些商业产品。
MYCAT背后有一支强大的技术团队,其参与者都是5年以上资深软件工程师、架构师、DBA等,优秀的技术团队保证了MYCAT的产品质量。
MYCAT并不依托于任何一个商业公司,因此不像某些开源项目,将一些重要的特性封闭在其商业产品中,使得开源项目成了一个摆设。


Mycat关注


老外都开始关注Mycat了!
catmycat.png


Mycat官方论坛:http://i.mycat.io/forum.php
Mycat Github:https://github.com/MyCATApache
Mycat权威指南第一版_V1.5.1:http://pan.baidu.com/s/1i3SFOpf


[开源工具]模拟数据生成器:Data-Processer

运维技术云智慧APM 发表了文章 • 1 个评论 • 318 次浏览 • 2016-12-16 14:37 • 来自相关话题

支撑互联网时代的7大开源软件

互联网资讯being 发表了文章 • 0 个评论 • 532 次浏览 • 2016-09-07 00:41 • 来自相关话题

开源软件现在成为整个互联网时代的支撑技术,你可能已经无法离开由开源软件构建起来的网络世界了。下面我们就来看看一些最重要的开源技术。
 

最伟大的互联网开源系统Linux





Linux是一款免费的操作系统,诞生于1991年,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。

它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳 定的多用户网络操作系统。这个系统是由全世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的 Unix兼容产品。

Linux可以说是已经无处不在,像Android手机就是以Linux为基础开发的,世界上大多的超级计算机也都采用的Linux系统,大多数的 数据中心使用Linux作为其支撑操作系统。谷歌、百度、淘宝等都通过Linux提供了我们每天用的互联网服务。Linux在航空控制系统中也扮演着重要角色,而且现在互联网的程序员和运维工作人员等,每天基本都是和Linux系统打交道。
 

加密互联网的安全协议OpenSSL





OpenSSL是套开放源代码的软件库包,实现了SSL与TLS协议。OpenSSL可以说是一个基于密码学的安全开发包,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。

也可以说OpenSSL是网络通信提供安全及数据完整性的一种安全协议,SSL可以在Internet上提供秘密性传输,能使用户/服务器应用之间的通信不被攻击者窃听。OpenSSL被网银、在线支付、电商网站、门户网站、电子邮件等重要网站广泛使用。

去年OpenSSL爆出安全漏洞,因为其应用如此之广,该漏洞爆出让整个互联网都为之震颤。
 

数据仓库大王--MySQL





MySQL是一个开源的小型的数据库管理系统,原开发者为瑞典的MySQL AB公司,该公司于2008年被Sun公司收购。2009年,甲骨文公司(Oracle)收购Sun公司,MySQL成为Oracle旗下产品。

很多信息都是存在数据库里面的,很多工程师在开发一些的小型项目时都会采用这个MySQL数据库。MySQL为C、C++、JAVA、PHP等多重 编程语言提供了API接口。而且支持windows、Mac、Linux等多种系统。这种广泛的支持使其得到更多开发者的青睐,MySQL是开发者需要掌 握的数据库之一。

Mysql最初为小型应用而开发,但现在的Mysql已经不是一个小型数据库了。基本上所有的互联网公司都会使用这个数据库系统,一些金融交易也会 采用Mysql作为数据库引擎。Mysql通过相应的调优既可以支撑大规模的访问,又可以保证数据安全性,已经成为威胁传统商业数据库系统的重要力量。
 

万能开发工具Eclipse





Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。Eclipse最初由OTI和IBM两家公司的IDE产品开发组创建,起始于1999年4月。目前由 IBM牵头,围绕着Eclipse项目已经发展成为了一个庞大的Eclipse联盟,有150多家软件公司参与到Eclipse项目中,其中包括 Borland、Rational Software、Red Hat及Sybase等。

就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。很多Java编程软件都是在Eclipse平台开发的,还有包括 Oracle在内的许多大公司也纷纷加入了该项目,并宣称Eclipse将来能成为可进行任何语言开发的IDE集大成者,使用者只需下载各种语言的插件即可。

Eclipse并不是一个直接服务于消费者的产品,它更像一个工匠手中万用工具,用Eclipse开发者可以打造出各种充满创造性的服务来满足最终用户的需求。
 

互联网的门卫Apache





Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛 使用,也是最流行的Web服务器端软件之一,市场占有率达60%左右。它快速、可靠并且可通过简单的API扩展,它可以和各种解释器配合使用,包括 PHP/Perl/Python等。

Apache就像一个负责的门卫,管理着服务器数据的进出。每当你在你的地址栏里输入http://xxoo.com  的时候,在遥远的远端,很有可能正是一台跑着Apache的服务器,将你需要的信息传输给浏览器。
 

大数据的心脏Hadoop





Hadoop 是一个能够对大量数据进行分布式处理的软件框架,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。Hadoop 一 直帮助解决各种问题,包括超大型数据集的排序和大文件的搜索。它还是各种搜索引擎的核心,比如 Amazon 的 A9 和用于查找酒信息 的 Able Grape 垂直搜索引擎。阿里巴巴集团在商品推荐、用户行为分析、信用计算领域也都有hadoop的应用。

在“大数据”已经成为潮流的当下,Hadoop已经成为最主要的一项技术。可以毫不夸张的说,没有Hadoop,就没有大多数的大数据应用。可以说对一个不知道Hadoop的程序员而言,你已经out了。
 

互联网的“排版引擎”WebKit





说是浏览器内核,其实“排版引擎”更容易理解一些。通过服务器传输给浏览器的信息只是一串乱糟糟的文本。要看到我们平时看到精美的网友,需要浏览器内核对这些文本进行解析,将枯燥的描述“画”成美丽的浏览界面。

WebKit 是一个开源的浏览器引擎,与之相应的引擎有Gecko(Mozilla Firefox 等使用的排版引擎)和Trident(也称为MSHTML,IE 使用的排版引擎)。根据StatCounter的浏览器市场份额调查,于2012年11月,Webkit市占超过了40%,它已经成为拥有最大市场份额的 排版引擎,超越了Internet Explorer所使用的Trident及Firefox所使用的Gecko引擎,并且WebKit份额正在逐年增加。

目前几乎所有网站和网银已经逐渐支持WebKit。WebKit 内核在手机上的应用也十分广泛,例如苹果的Safari、谷歌的Chrome浏览器都是基于这个框架来开发的。
 

总结

很多人可能尚未意识到,我们使用的电脑中运行有开源软件,手机中运行有开源软件,家里的电视也运行有开源软件,甚至小小的数码产品中也运行有开源软件,尤其是互联网服务器端软件,几乎全部是开源软件。毫不夸张地说,开源软件已经渗透到了我们日常生活的方方面面。
 
只有真正的开源软件产品才会做得更好,做得更有历史,会让使用的人由衷的感觉自由和快乐,只有这样才会像民族英雄一样,永远被传唱,被继承和传播,开源软件最大的意义就是众家参与,大家快乐,共同享受,为那些开源的极客们和开源企业致敬! 查看全部
开源软件现在成为整个互联网时代的支撑技术,你可能已经无法离开由开源软件构建起来的网络世界了。下面我们就来看看一些最重要的开源技术。
 


最伟大的互联网开源系统Linux


Linux.png

Linux是一款免费的操作系统,诞生于1991年,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。

它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳 定的多用户网络操作系统。这个系统是由全世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的 Unix兼容产品。

Linux可以说是已经无处不在,像Android手机就是以Linux为基础开发的,世界上大多的超级计算机也都采用的Linux系统,大多数的 数据中心使用Linux作为其支撑操作系统。谷歌、百度、淘宝等都通过Linux提供了我们每天用的互联网服务。Linux在航空控制系统中也扮演着重要角色,而且现在互联网的程序员和运维工作人员等,每天基本都是和Linux系统打交道。
 


加密互联网的安全协议OpenSSL


openssl.png

OpenSSL是套开放源代码的软件库包,实现了SSL与TLS协议。OpenSSL可以说是一个基于密码学的安全开发包,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。

也可以说OpenSSL是网络通信提供安全及数据完整性的一种安全协议,SSL可以在Internet上提供秘密性传输,能使用户/服务器应用之间的通信不被攻击者窃听。OpenSSL被网银、在线支付、电商网站、门户网站、电子邮件等重要网站广泛使用。

去年OpenSSL爆出安全漏洞,因为其应用如此之广,该漏洞爆出让整个互联网都为之震颤。
 


数据仓库大王--MySQL


mysql.png

MySQL是一个开源的小型的数据库管理系统,原开发者为瑞典的MySQL AB公司,该公司于2008年被Sun公司收购。2009年,甲骨文公司(Oracle)收购Sun公司,MySQL成为Oracle旗下产品。

很多信息都是存在数据库里面的,很多工程师在开发一些的小型项目时都会采用这个MySQL数据库。MySQL为C、C++、JAVA、PHP等多重 编程语言提供了API接口。而且支持windows、Mac、Linux等多种系统。这种广泛的支持使其得到更多开发者的青睐,MySQL是开发者需要掌 握的数据库之一。

Mysql最初为小型应用而开发,但现在的Mysql已经不是一个小型数据库了。基本上所有的互联网公司都会使用这个数据库系统,一些金融交易也会 采用Mysql作为数据库引擎。Mysql通过相应的调优既可以支撑大规模的访问,又可以保证数据安全性,已经成为威胁传统商业数据库系统的重要力量。
 


万能开发工具Eclipse


eclipse.png

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。Eclipse最初由OTI和IBM两家公司的IDE产品开发组创建,起始于1999年4月。目前由 IBM牵头,围绕着Eclipse项目已经发展成为了一个庞大的Eclipse联盟,有150多家软件公司参与到Eclipse项目中,其中包括 Borland、Rational Software、Red Hat及Sybase等。

就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。很多Java编程软件都是在Eclipse平台开发的,还有包括 Oracle在内的许多大公司也纷纷加入了该项目,并宣称Eclipse将来能成为可进行任何语言开发的IDE集大成者,使用者只需下载各种语言的插件即可。

Eclipse并不是一个直接服务于消费者的产品,它更像一个工匠手中万用工具,用Eclipse开发者可以打造出各种充满创造性的服务来满足最终用户的需求。
 


互联网的门卫Apache


apache.png

Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛 使用,也是最流行的Web服务器端软件之一,市场占有率达60%左右。它快速、可靠并且可通过简单的API扩展,它可以和各种解释器配合使用,包括 PHP/Perl/Python等。

Apache就像一个负责的门卫,管理着服务器数据的进出。每当你在你的地址栏里输入http://xxoo.com  的时候,在遥远的远端,很有可能正是一台跑着Apache的服务器,将你需要的信息传输给浏览器。
 


大数据的心脏Hadoop


hadoop.png

Hadoop 是一个能够对大量数据进行分布式处理的软件框架,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。Hadoop 一 直帮助解决各种问题,包括超大型数据集的排序和大文件的搜索。它还是各种搜索引擎的核心,比如 Amazon 的 A9 和用于查找酒信息 的 Able Grape 垂直搜索引擎。阿里巴巴集团在商品推荐、用户行为分析、信用计算领域也都有hadoop的应用。

在“大数据”已经成为潮流的当下,Hadoop已经成为最主要的一项技术。可以毫不夸张的说,没有Hadoop,就没有大多数的大数据应用。可以说对一个不知道Hadoop的程序员而言,你已经out了。
 


互联网的“排版引擎”WebKit


webkit.jpg

说是浏览器内核,其实“排版引擎”更容易理解一些。通过服务器传输给浏览器的信息只是一串乱糟糟的文本。要看到我们平时看到精美的网友,需要浏览器内核对这些文本进行解析,将枯燥的描述“画”成美丽的浏览界面。

WebKit 是一个开源的浏览器引擎,与之相应的引擎有Gecko(Mozilla Firefox 等使用的排版引擎)和Trident(也称为MSHTML,IE 使用的排版引擎)。根据StatCounter的浏览器市场份额调查,于2012年11月,Webkit市占超过了40%,它已经成为拥有最大市场份额的 排版引擎,超越了Internet Explorer所使用的Trident及Firefox所使用的Gecko引擎,并且WebKit份额正在逐年增加。

目前几乎所有网站和网银已经逐渐支持WebKit。WebKit 内核在手机上的应用也十分广泛,例如苹果的Safari、谷歌的Chrome浏览器都是基于这个框架来开发的。
 


总结


很多人可能尚未意识到,我们使用的电脑中运行有开源软件,手机中运行有开源软件,家里的电视也运行有开源软件,甚至小小的数码产品中也运行有开源软件,尤其是互联网服务器端软件,几乎全部是开源软件。毫不夸张地说,开源软件已经渗透到了我们日常生活的方方面面。
 
只有真正的开源软件产品才会做得更好,做得更有历史,会让使用的人由衷的感觉自由和快乐,只有这样才会像民族英雄一样,永远被传唱,被继承和传播,开源软件最大的意义就是众家参与,大家快乐,共同享受,为那些开源的极客们和开源企业致敬!

Docker的Web Ui管理和监控系统海鸥

开源项目OpenSkill 发表了文章 • 0 个评论 • 1541 次浏览 • 2016-08-23 00:33 • 来自相关话题

功能介绍

Seagull是一套友好的Web用户界面,用来全面的管理和监控Docker管理系统。
易于安装和Docker容器内卸载一键启动/停止/删除容器和image超快速(<10ms)的搜索和过滤支持多主机管理和监控国际化包括英语,中国,德国和法国
欲了解更多信息,请访问dockerseagull.com ,看三分钟的视频和官方的幻灯片 。
 

安装

安装非常简单,一条命令搞定,就是so easy!docker run -d -p 10086:10086 -v /var/run/docker.sock:/var/run/docker.sock tobegit3hub/seagull 或者运行:docker-compose up -d然后直接访问http://127.0.0.1:10086监控你的Docker容器;对于boot2docker用户,请运行boot2docker ip找到真正的IP地址。
 

Web效果图










多主机

海鸥支持监视多个服务器。 请确保你启动Docker的守护进程是这个样子 docker -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock -api-enable-cors=true -d

参与开发

海鸥是用Go和JavaScript实现的,使用了Beego、AngularJS、Bootstrap、Bower、JQuery和Docker等工具。你可以Fork这个项目并且按你的需求发送Pull-request。
配置Go路径然后尝试echo $GOPATHgo get github.com/astaxie/beegogo get github.com/beego/beegit clone https://github.com/tobegit3hub/seagull.git $GOPATH/src/github.com/tobegit3hub/seagull/go build seagull.go或者运行bee run seagull来调试./seagull或者运行sudo ./seagull来访问/var/run/docker.sock
更详细的海鸥设计和实施,还有非常好完善的帮助文档 。

注意

问题 #2表明,如果海鸥的IP和端口暴露每个人都可以访问您的Docker守护进程。 为了安全,你可以绑定到localhost来限制访问。
 
项目地址:https://github.com/tobegit3hub/seagull
  查看全部


功能介绍


Seagull是一套友好的Web用户界面,用来全面的管理和监控Docker管理系统。
  • 易于安装和Docker容器内卸载
  • 一键启动/停止/删除容器和image
  • 超快速(<10ms)的搜索和过滤
  • 支持多主机管理和监控
  • 国际化包括英语,中国,德国和法国

欲了解更多信息,请访问dockerseagull.com ,看三分钟的视频和官方的幻灯片
 


安装


安装非常简单,一条命令搞定,就是so easy!
docker run -d -p 10086:10086 -v /var/run/docker.sock:/var/run/docker.sock tobegit3hub/seagull 
或者运行:
docker-compose up -d
然后直接访问http://127.0.0.1:10086监控你的Docker容器;对于boot2docker用户,请运行boot2docker ip找到真正的IP地址。
 


Web效果图


docker_web_ui.png

DockerWebUI.png


多主机


海鸥支持监视多个服务器。 请确保你启动Docker的守护进程是这个样子
 docker -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock -api-enable-cors=true -d 


参与开发


海鸥是用Go和JavaScript实现的,使用了Beego、AngularJS、Bootstrap、Bower、JQuery和Docker等工具。你可以Fork这个项目并且按你的需求发送Pull-request。
  • 配置Go路径然后尝试echo $GOPATH
  • go get github.com/astaxie/beego
  • go get github.com/beego/bee
  • git clone https://github.com/tobegit3hub/seagull.git $GOPATH/src/github.com/tobegit3hub/seagull/
  • go build seagull.go或者运行bee run seagull来调试
  • ./seagull或者运行sudo ./seagull来访问/var/run/docker.sock

更详细的海鸥设计和实施,还有非常好完善的帮助文档 。


注意


问题 #2表明,如果海鸥的IP和端口暴露每个人都可以访问您的Docker守护进程。 为了安全,你可以绑定到localhost来限制访问。
 
项目地址:https://github.com/tobegit3hub/seagull
 


华为开源支持Apache Hadoop的列式存储文件格式的CarbonData

开源项目Geek小A 发表了文章 • 0 个评论 • 887 次浏览 • 2016-06-14 21:35 • 来自相关话题

CarbonData是由华为开发、开源并支持Apache Hadoop的列式存储文件格式,支持索引、压缩以及解编码等,其目的是为了实现同一份数据达到多种需求,而且能够实现更快的交互查询。目前该项目正处于Apache孵化过程中。

为什么重新设计一种文件格式

目前华为针对数据的需求分析主要有以下5点要求:
[]支持海量数据扫描并取其中几列;[/][]支持根据主键进行查找,并在压秒级响应;[/][]支持在海量数据进行类似于OLAP的交互式查询,并且查询中涉及到许多过滤条件,这种类型的workload应该在几秒钟内响应;[/][]支持快速地抽取单独的记录,并且从该记录中获取到所有列信息;[/][]支持HDFS,这样客户可以利用现有的Hadoop集群。[/]

目前现有的Hadoop生态系统中没有同时满足这五点要求文件格式。比如Parquet/ORC的文件仅仅满足第一和第五条要求,而其他的要求无法满足,所以基于这些事实华为开始开发CarbonData。

CarbonData有啥优势

CarbonData文件格式是基于列式存储的,并存储在HDFS之上;其包含了现有列式存储文件格式的许多有点,比如:可分割、可压缩、支持复杂数据类型等;并且CarbonData为了解决上面5点要求,加入了许多独特的特性,主要概括为以下四点:
[]存储数据及其索引:在有过滤的查询中,它可以显著地加速查询性能,减少I/O和CPU资源。CarbonData的索引由多级索引组成,处理框架可以利用这些索引信息来减少调度和一些处理的开销;在任务扫描数据的时候它可以仅仅扫描更细粒度的单元(称为blocklet),而不需要扫描整个文件。[/][]可操作的编码数据:通过支持高效的压缩和全局编码模式,它可以直接在压缩或者编码的数据上查询,仅仅在需要返回结果的时候才进行转换,这种技术被称为late materialized。[/][]列组:支持多列组成一个列组,并且使用行格式进行存储,这减少了查询时行重建的开销。[/][]支持多种使用场景:比如支持类OLAP风格的交互式查询、顺序存取、随机访问等。[/]

CarbonData文件格式

一个CarbonData文件是由一系列被称为blocklet组成的;除了blocklet,还有许多其他的元信息,比如模式、偏移量以及索引信息等,这些元信息是存储在CarbonData文件中的footer里。

每当在内存中建立索引的时候都需要读取footer里面的信息,因为可以利用这些信息优化后续所有的查询。

每个blocklet又是由许多Data Chunks组成。Data Chunks里面的数据既可以按列或者行的形式存储;数据既可以是单独的一列也可以是许多列。文件中所有的blocklets都包含相同数量和类型的Data Chunks。CarbonData文件格式如下所示:




每个Data Chunk又是由许多被称为Pages的单元组成。总共有三种类型的pages:

1、Data Page:包含一列或者列组的编码数据;

2、Row ID Page:包含行id的映射,在Data Page以反向索引的形式存储时会被使用;

3、RLE Page:包含一些额外的元信息,只有在Data Page使用RLE编码的时候会被使用。

CarbonData文件的详细信息如下:





编译CarbonData

编译CarbonData的预备条件:
1、类Unix环境(Linux, Mac OS X)
2、git
3、Apache Maven (推荐使用3.0.4)
4、Java 7 or 8
5、Scala 2.10
6、Apache Thrift 0.9.3
从github中克隆CarbonData$ git clone https://github.com/HuaweiBigData/carbondata.git根据自己需求依次选择下面命令编译CarbonData
1、Build without testing$ cd carbondata
$ mvn -DskipTests clean install 2、Build with testing:$ cd carbondata
$ mvn clean install3、Build along with integration test cases$ cd carbondata
$ mvn -Pintegration-test clean install更多关于Carbondata的信息请参考:https://github.com/HuaweiBigData/carbondata 
分享原文地址:http://www.iteblog.com/archives/1689 查看全部
CarbonData是由华为开发、开源并支持Apache Hadoop的列式存储文件格式,支持索引、压缩以及解编码等,其目的是为了实现同一份数据达到多种需求,而且能够实现更快的交互查询。目前该项目正处于Apache孵化过程中。


为什么重新设计一种文件格式


目前华为针对数据的需求分析主要有以下5点要求:
    []支持海量数据扫描并取其中几列;[/][]支持根据主键进行查找,并在压秒级响应;[/][]支持在海量数据进行类似于OLAP的交互式查询,并且查询中涉及到许多过滤条件,这种类型的workload应该在几秒钟内响应;[/][]支持快速地抽取单独的记录,并且从该记录中获取到所有列信息;[/][]支持HDFS,这样客户可以利用现有的Hadoop集群。[/]


目前现有的Hadoop生态系统中没有同时满足这五点要求文件格式。比如Parquet/ORC的文件仅仅满足第一和第五条要求,而其他的要求无法满足,所以基于这些事实华为开始开发CarbonData。


CarbonData有啥优势


CarbonData文件格式是基于列式存储的,并存储在HDFS之上;其包含了现有列式存储文件格式的许多有点,比如:可分割、可压缩、支持复杂数据类型等;并且CarbonData为了解决上面5点要求,加入了许多独特的特性,主要概括为以下四点:
    []存储数据及其索引:在有过滤的查询中,它可以显著地加速查询性能,减少I/O和CPU资源。CarbonData的索引由多级索引组成,处理框架可以利用这些索引信息来减少调度和一些处理的开销;在任务扫描数据的时候它可以仅仅扫描更细粒度的单元(称为blocklet),而不需要扫描整个文件。[/][]可操作的编码数据:通过支持高效的压缩和全局编码模式,它可以直接在压缩或者编码的数据上查询,仅仅在需要返回结果的时候才进行转换,这种技术被称为late materialized。[/][]列组:支持多列组成一个列组,并且使用行格式进行存储,这减少了查询时行重建的开销。[/][]支持多种使用场景:比如支持类OLAP风格的交互式查询、顺序存取、随机访问等。[/]


CarbonData文件格式


一个CarbonData文件是由一系列被称为blocklet组成的;除了blocklet,还有许多其他的元信息,比如模式、偏移量以及索引信息等,这些元信息是存储在CarbonData文件中的footer里。

每当在内存中建立索引的时候都需要读取footer里面的信息,因为可以利用这些信息优化后续所有的查询。

每个blocklet又是由许多Data Chunks组成。Data Chunks里面的数据既可以按列或者行的形式存储;数据既可以是单独的一列也可以是许多列。文件中所有的blocklets都包含相同数量和类型的Data Chunks。CarbonData文件格式如下所示:
carbon_data_file_structure_new.png

每个Data Chunk又是由许多被称为Pages的单元组成。总共有三种类型的pages:

1、Data Page:包含一列或者列组的编码数据;

2、Row ID Page:包含行id的映射,在Data Page以反向索引的形式存储时会被使用;

3、RLE Page:包含一些额外的元信息,只有在Data Page使用RLE编码的时候会被使用。

CarbonData文件的详细信息如下:
carbon_data_format_new.png


编译CarbonData


编译CarbonData的预备条件:
1、类Unix环境(Linux, Mac OS X)
2、git
3、Apache Maven (推荐使用3.0.4)
4、Java 7 or 8
5、Scala 2.10
6、Apache Thrift 0.9.3
从github中克隆CarbonData
$ git clone https://github.com/HuaweiBigData/carbondata.git
根据自己需求依次选择下面命令编译CarbonData
1、Build without testing
$ cd carbondata
$ mvn -DskipTests clean install
2、Build with testing:
$ cd carbondata
$ mvn clean install
3、Build along with integration test cases
$ cd carbondata
$ mvn -Pintegration-test clean install
更多关于Carbondata的信息请参考:https://github.com/HuaweiBigData/carbondata 
分享原文地址:http://www.iteblog.com/archives/1689

php扩展谷歌JsonNet发布

开源项目chris 发表了文章 • 0 个评论 • 642 次浏览 • 2016-06-02 16:33 • 来自相关话题

就在昨天,六一儿童节,云智慧高级架构师Neeke把支持谷歌的JsonNet的php扩展模块封装开源了!
 
简单语法改进
Input (Jsonnet){
cocktails: {
// Ingredient quantities are in fluid ounces.
"Tom Collins": {
ingredients: [
{ kind: "Farmers Gin", qty: 1.5 },
{ kind: "Lemon", qty: 1 },
{ kind: "Simple Syrup", qty: 0.5 },
{ kind: "Soda", qty: 2 },
{ kind: "Angostura", qty: "dash" },
],
garnish: "Maraschino Cherry",
served: "Tall",
},
Manhattan: {
ingredients: [
{ kind: "Rye", qty: 2.5 },
{ kind: "Sweet Red Vermouth", qty: 1 },
{ kind: "Angostura", qty: "dash" },
],
garnish: "Maraschino Cherry",
served: "Straight Up",
},
}
}Output (JSON){
"cocktails": {

"Tom Collins": {
"ingredients": [
{ "kind": "Farmers Gin", "qty": 1.5 },
{ "kind": "Lemon", "qty": 1 },
{ "kind": "Simple Syrup", "qty": 0.5 },
{ "kind": "Soda", "qty": 2 },
{ "kind": "Angostura", "qty": "dash" }
],
"garnish": "Maraschino Cherry",
"served": "Tall"
},
"Manhattan": {
"ingredients": [
{ "kind": "Rye", "qty": 2.5 },
{ "kind": "Sweet Red Vermouth", "qty": 1 },
{ "kind": "Angostura", "qty": "dash" }
],
"garnish": "Maraschino Cherry",
"served": "Straight Up"
}
}
}Demo of PHP JsonNet::evaluateFile('bar_menu.1.jsonnet');

$Snippet = '
{
cocktails: {
// Ingredient quantities are in fluid ounces.
"Tom Collins": {
ingredients: [
{ kind: "Farmers Gin", qty: 1.5 },
{ kind: "Lemon", qty: 1 },
{ kind: "Simple Syrup", qty: 0.5 },
{ kind: "Soda", qty: 2 },
{ kind: "Angostura", qty: "dash" },
],
garnish: "Maraschino Cherry",
served: "Tall",
},
Manhattan: {
ingredients: [
{ kind: "Rye", qty: 2.5 },
{ kind: "Sweet Red Vermouth", qty: 1 },
{ kind: "Angostura", qty: "dash" },
],
garnish: "Maraschino Cherry",
served: "Straight Up",
},
}
}
';

var_dump(JsonNet::evaluateSnippet($Snippet));安装请参考我的实践文章:http://www.openskill.cn/article/373
 
项目地址:

Github:https://github.com/Neeke/Jsonnet-PHP
Pecl:  http://pecl.php.net/package/jsonnet 
Gitosc:  http://git.oschina.net/ciogao/Jsonnet-PHP 查看全部
就在昨天,六一儿童节,云智慧高级架构师Neeke把支持谷歌的JsonNet的php扩展模块封装开源了!
 
简单语法改进
Input (Jsonnet)
{
cocktails: {
// Ingredient quantities are in fluid ounces.
"Tom Collins": {
ingredients: [
{ kind: "Farmers Gin", qty: 1.5 },
{ kind: "Lemon", qty: 1 },
{ kind: "Simple Syrup", qty: 0.5 },
{ kind: "Soda", qty: 2 },
{ kind: "Angostura", qty: "dash" },
],
garnish: "Maraschino Cherry",
served: "Tall",
},
Manhattan: {
ingredients: [
{ kind: "Rye", qty: 2.5 },
{ kind: "Sweet Red Vermouth", qty: 1 },
{ kind: "Angostura", qty: "dash" },
],
garnish: "Maraschino Cherry",
served: "Straight Up",
},
}
}
Output (JSON)
{
"cocktails": {

"Tom Collins": {
"ingredients": [
{ "kind": "Farmers Gin", "qty": 1.5 },
{ "kind": "Lemon", "qty": 1 },
{ "kind": "Simple Syrup", "qty": 0.5 },
{ "kind": "Soda", "qty": 2 },
{ "kind": "Angostura", "qty": "dash" }
],
"garnish": "Maraschino Cherry",
"served": "Tall"
},
"Manhattan": {
"ingredients": [
{ "kind": "Rye", "qty": 2.5 },
{ "kind": "Sweet Red Vermouth", "qty": 1 },
{ "kind": "Angostura", "qty": "dash" }
],
"garnish": "Maraschino Cherry",
"served": "Straight Up"
}
}
}
Demo of PHP
    JsonNet::evaluateFile('bar_menu.1.jsonnet');

$Snippet = '
{
cocktails: {
// Ingredient quantities are in fluid ounces.
"Tom Collins": {
ingredients: [
{ kind: "Farmers Gin", qty: 1.5 },
{ kind: "Lemon", qty: 1 },
{ kind: "Simple Syrup", qty: 0.5 },
{ kind: "Soda", qty: 2 },
{ kind: "Angostura", qty: "dash" },
],
garnish: "Maraschino Cherry",
served: "Tall",
},
Manhattan: {
ingredients: [
{ kind: "Rye", qty: 2.5 },
{ kind: "Sweet Red Vermouth", qty: 1 },
{ kind: "Angostura", qty: "dash" },
],
garnish: "Maraschino Cherry",
served: "Straight Up",
},
}
}
';

var_dump(JsonNet::evaluateSnippet($Snippet));
安装请参考我的实践文章:http://www.openskill.cn/article/373
 
项目地址


Github:https://github.com/Neeke/Jsonnet-PHP
Pecl:  http://pecl.php.net/package/jsonnet 
Gitosc:  http://git.oschina.net/ciogao/Jsonnet-PHP


开源Mysql自动补全、语法高亮客户端Mycli

开源项目chris 发表了文章 • 0 个评论 • 1261 次浏览 • 2016-05-30 20:38 • 来自相关话题

介绍:MyCli是一个MySQL的命令行客户端,可以实现自动补全(auto-completion)和语法高亮,同时也可应用于MariaDB和Percona。
 
功能特征:
[]MyCli使用Python Prompt Toolkit编写。[/][]支持语法高亮[/][]当你输入SQL关键字,数据库的表格和列时可自动补全。[/][]智能补全(默认启用),会提示文本感应的(context-sensitive)补全。[/][]配置文件在第一次启动时,自动创建在~/.myclirc[/]
 
安装:
兼容性:
OS X和Linux上测试过。运行在Python 2.6,2.6,3.3,3.4和3.5。能够很好地处理unicode输入/输出。
 
Python Package:
$ pip install mycli

or

$ easy_install mycli
 Mac OS X:
最简单的方法在OS X机器安装mycli是使用homebrew
$ brew update && brew install mycliLinux:
Debian/Ubuntu Package:
mycli托管在debian软件包packagecloud.io.
添加gpg密钥packagecloud包验证。
$ curl https://packagecloud.io/gpg.key | apt-key add -安装apt-transport-https包,支持apt使用https下载包
$ apt-get install -y apt-transport-https添加mycli安装源
$ echo "deb https://packagecloud.io/amjith/mycli/ubuntu/ trusty main" | sudo tee -a /etc/apt/sources.list更新mycli的安装源,然后安装mycli
$ sudo apt-get update
$ sudo apt-get install mycli现在使用sudo apt-get upgrade mycli很容易使mycli升级!
 
RHEL, Centos, Fedora:
我还没有为mycli构建RPM包。所以请使用pip安装mycli。你可以在你的系统上安装pip使用:
$ sudo yum install python-pip python-devel一旦安装pip,您可以如下安装mycli:
$ sudo pip install mycli
效果图:
自动补全
简单的完成如关键字和sql函数。




 
智能提示
Table name completions after the 'FROM' keyword.
 




列名中引用的表的查询范围




 
别名支持
列完成将即使工作表名称别名。




 
语法高亮显示
sql的语法高亮显示。




 
pager
一个sql命令的输出是通过更少的命令自动输送。




 
动态效果图如下:




 

项目官网:http://mycli.net/
开源地址:https://github.com/dbcli/mycli 查看全部
介绍:MyCli是一个MySQL的命令行客户端,可以实现自动补全(auto-completion)和语法高亮,同时也可应用于MariaDB和Percona。
 
功能特征:
    []MyCli使用Python Prompt Toolkit编写。[/][]支持语法高亮[/][]当你输入SQL关键字,数据库的表格和列时可自动补全。[/][]智能补全(默认启用),会提示文本感应的(context-sensitive)补全。[/][]配置文件在第一次启动时,自动创建在~/.myclirc[/]

 
安装:
兼容性:
OS X和Linux上测试过。运行在Python 2.6,2.6,3.3,3.4和3.5。能够很好地处理unicode输入/输出。
 
Python Package:
$ pip install mycli

or

$ easy_install mycli

 Mac OS X:
最简单的方法在OS X机器安装mycli是使用homebrew
$ brew update && brew install mycli
Linux:
Debian/Ubuntu Package:
mycli托管在debian软件包packagecloud.io.
添加gpg密钥packagecloud包验证。
 $ curl https://packagecloud.io/gpg.key | apt-key add -
安装apt-transport-https包,支持apt使用https下载包
$ apt-get install -y apt-transport-https
添加mycli安装源
$ echo "deb https://packagecloud.io/amjith/mycli/ubuntu/ trusty main" | sudo tee -a /etc/apt/sources.list
更新mycli的安装源,然后安装mycli
$ sudo apt-get update
$ sudo apt-get install mycli
现在使用sudo apt-get upgrade mycli很容易使mycli升级!
 
RHEL, Centos, Fedora:
我还没有为mycli构建RPM包。所以请使用pip安装mycli。你可以在你的系统上安装pip使用:
$ sudo yum install python-pip python-devel
一旦安装pip,您可以如下安装mycli:
$ sudo pip install mycli

效果图:
自动补全
简单的完成如关键字和sql函数。
t1.png

 
智能提示
Table name completions after the 'FROM' keyword.
 
t2.png

列名中引用的表的查询范围
t3.png

 
别名支持
列完成将即使工作表名称别名。
t4.png

 
语法高亮显示
sql的语法高亮显示。
t5.png

 
pager
一个sql命令的输出是通过更少的命令自动输送。
t6.png

 
动态效果图如下:
dt.gif

 


项目官网:http://mycli.net/
开源地址:https://github.com/dbcli/mycli


商业级开源虚拟化管理平台OVM

开源项目采菊篱下 发表了文章 • 0 个评论 • 1413 次浏览 • 2016-04-26 20:44 • 来自相关话题

开源的虚拟化管理平台也有很多,比如OpenStack、Cloudstack OpenNebula、oVirt/RHEV、ZStack等,为什么还要自行研发开发呢,因为这些都不够简单和易用,功能不够全面。而OVM得出发点就是简单、易玩!

经历了一年来一个虚拟化的开源管理平台OVM-(Open Virtual Manager )终于诞生了。OVM作为开源虚拟化管理平台以做最好用的虚拟化管理平台为目标。面向中小型虚拟化环境,打造简单易用的虚拟化和管理平台。 让零基础的用户在几个小时内可以部署、使用自己的虚拟化系统。主要特性就是简单、易部署。
 
具体的安装下载参考:http://www.openvirtmanager.org/install.html​ 
 
下面就让我们来体验初恋般的感觉,OVM具有魅力,我们可以怎么使用?!!!
 
一、使用Web客户端登录OVM
OVM安装配置完成后,您可以使用FireFox浏览器或Google浏览器访问OVM用户界面。
前提条件:
          您必须具有在系统配置期间创建的系统管理员用户名和密码(系统默认用户名为admin、默认密码为password。
步骤:
[]打开Web 浏览器,并导航到http://管理平台ip[/][]输入系统管理员用户名和密码(系统默认为admin、password),并单击登录。[/]




OVM将带您进入到虚拟化与云的世界。
 
二、新建数据中心
[]OVM数据中心支持管理私有的数据中心和公有云资源。[/][]OVM通过远程服务模块管理数据中心和公有云。[/]




新建数据中心步骤:
1、选择添加内部虚拟中心,弹出对话框,由于各个组件使用all-in-one安装,所以输入管理平台IP,重复IP,免除重复操作。




2、检查所有IP,如果安装没有问题,检查会顺利通过。




3、点击保存,内部数据中心建立完毕。




 
三、新建服务器资源池
服务器池是物理主机的主要容器,通常要把主机(即物理服务器)添加到服务器池。

数据中心可包含多个服务器池,一般全国性的集团公司或跨国公司会使用多个服务器池来表示企业内的组织结构。

服务器池的对象可以交互,但不同服务器池的交互则会受到限制。例如:您可以使用OVM迁移技术在一个服务器池内的主机之间迁移虚拟机,但不可以将虚拟机迁移到另一个服务器池的主机上。
新建服务器资源池步骤:
1、选择数据中心—主机,建立资源池:




 2、输入资源池名称,描述点击保存,资源池建立完毕。





四、为服务器资源池设置分配策略
点击数据中心—资源分配,可以为虚拟资源进行配置负载均衡策略,合理调度虚拟资源,提高虚拟机性能。




 
五、添加主机1、请确保你已经安装了OVM节点主机;
2、选择建立好的资源池,添加主机




3、选择相应的Hypervisor,添加计算节点的IP,点击保存。








4、在新的弹框中在数据存储选择共享NFS存储,网络接口进行选择,之后保存,主机添加成功。












 
六、主机管理
选择编辑主机,可对主机资源进行管理或修改,如主机环境有问题,可以进行操作此项。




 
七、创建虚拟数据中心
 1、 选择主菜单栏虚拟数据中心—虚拟数据中心,点击+号添加




2、填写名称,选择相应数据中心和Hypervisor。




3、点击保存,虚拟数据中心添加成功。




 
八、创建vApp
1、选择主菜单栏虚拟数据中心—vApp,点击+号,填写名称。




2、点击保存,vApp添加成功




 
九、通过ISO新建VM
 1、选择主菜单栏应用商店,上传ISO。




2、上传ISO后 ,进入虚拟数据中心的vApp,在ISO选项中创建虚拟机,创建过程中可以进行资源配置建立。












更多详情和项目进度可以关注官网:http://www.openvirtmanager.org/  和官网社区! 查看全部
开源的虚拟化管理平台也有很多,比如OpenStack、Cloudstack OpenNebula、oVirt/RHEV、ZStack等,为什么还要自行研发开发呢,因为这些都不够简单和易用,功能不够全面。而OVM得出发点就是简单、易玩!

经历了一年来一个虚拟化的开源管理平台OVM-(Open Virtual Manager )终于诞生了。OVM作为开源虚拟化管理平台以做最好用的虚拟化管理平台为目标。面向中小型虚拟化环境,打造简单易用的虚拟化和管理平台。 让零基础的用户在几个小时内可以部署、使用自己的虚拟化系统。主要特性就是简单、易部署。
 
具体的安装下载参考:http://www.openvirtmanager.org/install.html​ 
 
下面就让我们来体验初恋般的感觉,OVM具有魅力,我们可以怎么使用?!!!
 
一、使用Web客户端登录OVM
OVM安装配置完成后,您可以使用FireFox浏览器或Google浏览器访问OVM用户界面。
前提条件:
          您必须具有在系统配置期间创建的系统管理员用户名和密码(系统默认用户名为admin、默认密码为password。
步骤:
    []打开Web 浏览器,并导航到http://管理平台ip[/][]输入系统管理员用户名和密码(系统默认为admin、password),并单击登录。[/]

image001.png

OVM将带您进入到虚拟化与云的世界。
 
二、新建数据中心
    []OVM数据中心支持管理私有的数据中心和公有云资源。[/][]OVM通过远程服务模块管理数据中心和公有云。[/]

image005.png

新建数据中心步骤:
1、选择添加内部虚拟中心,弹出对话框,由于各个组件使用all-in-one安装,所以输入管理平台IP,重复IP,免除重复操作。
image006.png

2、检查所有IP,如果安装没有问题,检查会顺利通过。
image007.png

3、点击保存,内部数据中心建立完毕。
imag8.png

 
三、新建服务器资源池
服务器池是物理主机的主要容器,通常要把主机(即物理服务器)添加到服务器池。

数据中心可包含多个服务器池,一般全国性的集团公司或跨国公司会使用多个服务器池来表示企业内的组织结构。

服务器池的对象可以交互,但不同服务器池的交互则会受到限制。例如:您可以使用OVM迁移技术在一个服务器池内的主机之间迁移虚拟机,但不可以将虚拟机迁移到另一个服务器池的主机上。
新建服务器资源池步骤:
1、选择数据中心—主机,建立资源池:
image009.png

 2、输入资源池名称,描述点击保存,资源池建立完毕。
image010.png


四、为服务器资源池设置分配策略
点击数据中心—资源分配,可以为虚拟资源进行配置负载均衡策略,合理调度虚拟资源,提高虚拟机性能。
image011.png

 
五、添加主机1、请确保你已经安装了OVM节点主机;
2、选择建立好的资源池,添加主机
image012.png

3、选择相应的Hypervisor,添加计算节点的IP,点击保存。
image013.png

image014.png

4、在新的弹框中在数据存储选择共享NFS存储,网络接口进行选择,之后保存,主机添加成功。
image015.png

image016.png

image017.png

 
六、主机管理
选择编辑主机,可对主机资源进行管理或修改,如主机环境有问题,可以进行操作此项。
image018.png

 
七、创建虚拟数据中心
 1、 选择主菜单栏虚拟数据中心—虚拟数据中心,点击+号添加
image019.png

2、填写名称,选择相应数据中心和Hypervisor。
image020.png

3、点击保存,虚拟数据中心添加成功。
image021.png

 
八、创建vApp
1、选择主菜单栏虚拟数据中心—vApp,点击+号,填写名称。
image022.png

2、点击保存,vApp添加成功
image023.png

 
九、通过ISO新建VM
 1、选择主菜单栏应用商店,上传ISO。
image024.png

2、上传ISO后 ,进入虚拟数据中心的vApp,在ISO选项中创建虚拟机,创建过程中可以进行资源配置建立。
image025.png

image026.png

image027.png

更多详情和项目进度可以关注官网:http://www.openvirtmanager.org/  和官网社区!

开源管理的Saltstack Web UI(持续更新)

开源项目koyo 发表了文章 • 0 个评论 • 2116 次浏览 • 2016-04-24 23:33 • 来自相关话题

项目名称:dzhops
[]使用Django框架开发的Salt Stack Web UI[/][]开发语言: python;[/][]后端框架: Django;[/][]前端框架:bootstrap/jquery;[/][]这个项目最初是我个人爱好,不过后来发现,确实能解决目前SaltStack在命令行模式下的部分缺陷;所以,现在公司已经开始在生产使用,这也直接带来一个问题,关于这套系统是否继续开源的思考;[/]
 
环境:
[]RHEL 6.5 x86_64[/][]salt-master 2015.5.3[/][]salt-minion 2015.5.3[/][]salt-api 2015.5.3[/][]Django 1.6.8[/][]python 2.6.6[/][]MySQL 5.5[/][]网卡流量图使用rrdtool(v1.3.8)工具[/]
 
dzhops更新记录:
[]> SaltStack相关功能(部署、更新、维护、远程)代码重构;[/][]> 视图文件拆分,新建立app:saltstack/record/managekeys;[/][]> 使用json格式通过接口传递数据,提高代码重用率;[/][]> 远程操作的jid及返回结果相关信息入库;[/][]> 对返回结果按IP进行排序;[/][]> 返回结果展示按钮增加上下距离;[/][]> 前端各选项左右对齐;[/][]> 远程命令执行返回结果显示优化;[/][]> 取消网卡流量监控;[/]
 
功能介绍
1.登陆页面 




2.首页,显示SaltMaster所在服务器及相关组件状态信息 目前监控数据,都是通过独立的信息采集脚本完成,需要做计划任务。 




3.主机列表 进入主机列表界面,可以选择机房和维护人员,使用ajax处理,每次选择会从库中重新查询符合条件的数据; 这些服务器相关的信息支持自动采集,由于目前写的方法只能完成采集任务,所以并没有将链接放出来,不过可以通过访问指定链接进行访问。 




4.SaltStack 可完成如下功能:
[]服务器初始化(如模块部署等)[/][]程序、配置更新[/][]日常维护操作[/][]远程命令执行 当对Minion执行操作时,会记录本次目标Minion的数量,然后与返回结果的Minion数量进行对比,找出哪些没有返回结果;当接收到返回结果后,使用bootstrap的模态框显示结果,其中蓝色表示执行成功,红色表示有失败存在,可以点击标签查看详细情况;[/]












5.MinionKeys管理 可以分别选择已接受、待接受、已拒绝,并且可以选择机房及维护人员,进行对应的管理操作; 




6.操作记录 可以记录每次操作执行人的账号、操作、目标、及jid,并可以通过jid查看该次操作的返回结果详细情况。








更多详情可以访问项目开源地址:https://github.com/Hasal/dzhops 查看全部
项目名称:dzhops
    []使用Django框架开发的Salt Stack Web UI[/][]开发语言: python;[/][]后端框架: Django;[/][]前端框架:bootstrap/jquery;[/][]这个项目最初是我个人爱好,不过后来发现,确实能解决目前SaltStack在命令行模式下的部分缺陷;所以,现在公司已经开始在生产使用,这也直接带来一个问题,关于这套系统是否继续开源的思考;[/]

 
环境:
    []RHEL 6.5 x86_64[/][]salt-master 2015.5.3[/][]salt-minion 2015.5.3[/][]salt-api 2015.5.3[/][]Django 1.6.8[/][]python 2.6.6[/][]MySQL 5.5[/][]网卡流量图使用rrdtool(v1.3.8)工具[/]

 
dzhops更新记录:
    []> SaltStack相关功能(部署、更新、维护、远程)代码重构;[/][]> 视图文件拆分,新建立app:saltstack/record/managekeys;[/][]> 使用json格式通过接口传递数据,提高代码重用率;[/][]> 远程操作的jid及返回结果相关信息入库;[/][]> 对返回结果按IP进行排序;[/][]> 返回结果展示按钮增加上下距离;[/][]> 前端各选项左右对齐;[/][]> 远程命令执行返回结果显示优化;[/][]> 取消网卡流量监控;[/]

 
功能介绍
1.登陆页面 
login.png

2.首页,显示SaltMaster所在服务器及相关组件状态信息 目前监控数据,都是通过独立的信息采集脚本完成,需要做计划任务。 
index.png

3.主机列表 进入主机列表界面,可以选择机房和维护人员,使用ajax处理,每次选择会从库中重新查询符合条件的数据; 这些服务器相关的信息支持自动采集,由于目前写的方法只能完成采集任务,所以并没有将链接放出来,不过可以通过访问指定链接进行访问。 
asset.png

4.SaltStack 可完成如下功能:
    []服务器初始化(如模块部署等)[/][]程序、配置更新[/][]日常维护操作[/][]远程命令执行 当对Minion执行操作时,会记录本次目标Minion的数量,然后与返回结果的Minion数量进行对比,找出哪些没有返回结果;当接收到返回结果后,使用bootstrap的模态框显示结果,其中蓝色表示执行成功,红色表示有失败存在,可以点击标签查看详细情况;[/]

deploy.png

deploy_show.png

deploy_show_success.png

5.MinionKeys管理 可以分别选择已接受、待接受、已拒绝,并且可以选择机房及维护人员,进行对应的管理操作; 
manage.png

6.操作记录 可以记录每次操作执行人的账号、操作、目标、及jid,并可以通过jid查看该次操作的返回结果详细情况。
record.png

record_detail.png

更多详情可以访问项目开源地址:https://github.com/Hasal/dzhops

LinkedIn开源Hadoop/Spark性能监控调优工具Dr. Elephant

运维技术koyo 发表了文章 • 0 个评论 • 1148 次浏览 • 2016-04-18 23:12 • 来自相关话题

本文来源于全球最大的职业社交网站LinkedIn领英,文章版权归作者本人所有。
 
今天LinkedIn宣布开源Dr. Elephant,Dr. Elephant能够很好地帮助用户理解、分析和优化Hadoop和Spark的工作流。LinkedIn在去年第八届Hadoop Summit上第一次在社区呈现。

动机​
Hadoop是一个分布式数据存储和大数据处理框架,体量大、组件复杂,因而每个组件的性能优化就显得异常重要。在优化底层硬件资源,网络架构,OS和其它堆栈的同时,也需要对集群上运行的任务进行优化。
 
什么是Dr. Elephant?
Dr. Elephant是一个Hadoop 和Spark的性能监控和调优工具。Dr. Elephant能自动化收集所有指标,进行数据分析,并以简单易用的方式进行呈现。Dr. Elephant的目标是提高开发人员的开发效率和增加集群任务调试的高效性。Dr. Elephant支持对Hadoop和Spark任务进行可插拔式、配置化以及基于规则的启发式job性能分析,并且根据分析结果给出合适的建议来指导如何调优使任务更有效率。
 
为什么选择Dr. Elephant?
其它开源或者商用Hadoop优化工具都是收集系统资源指标和监控集群资源信息,关注点仅在于简化Hadoop集群的发布和管理,而很少有工具是来帮助Hadoop优化任务流。这些工具不支持Hadoop集群的规模化和Hadoop框架的增长,而Dr. Elephant支持Hadoop生态的各种框架,并且很容易的扩展到新的框架,已经支持Spark。Dr. Elephant让用户更清晰的掌握Hadoop和Spark原理,并帮助其轻松的优化任务。
 
Dr. Elephant如何工作?
Dr. Elephant从YARN Resource Manager周期性获取所有最近运行成功和失败的应用列表,然后从Job History Server中攫取每个应用的元数据,包括job counters、任务配置和任务数据。有了元数据后,Dr. Elephant进行启发式分析,并生成每个任务的诊断报告,从而进行相应的整体优化。Dr. Elephant将会标记出五个等级问题严重性,指出潜在的性能问题。




图1 Dr. Elephant问题等级




图2 Dr. Elephant的面板
 
通过Dr. Elephant的UI查看数据面板,见图2,这里显示集群的相关统计信息,包括集群上运行的任务数,需要优化的任务数,以及基于启发式分析发现的严重任务数。图中是最近24小时的Dr. Elephant分析的所有最近的任务。




图3 Dr. Elephant的搜索页
 
Dr. Elephant提供一个搜索功能,帮助用户通过任务ID/应用ID,执行ID,任务类型,任务严重程度和任务完成时间等来搜索任务。




图4 Dr. Elephant任务页面
 
当你点击指定的搜索结果,会显示完整的任务信息,并能查看相互引用的任务流。




图5 Dr. Elephant的工作流历史




图6 Dr. Elephant的任务历史
 
Dr. Elephant的任务历史和工作流历史可以帮用户比较前后执行的区别。Dr. Elephant通过启发式计算出每个任务执行的性能得分并作图。这个图表可以帮助用户很直观的分析哪个性能好。
 
家庭医生
Dr. Elephant在LinkedIn非常受欢迎,大家钟爱其简洁性。Dr. Elephant通过简单的诊断可以解决百分之八十的问题。Dr. Elephant提供任务级别的建议帮助用户去理解和优化Hadoop工作流。

Dr. Elephant已经完全和Hadoop生态整合。在LinkedIn,开发人员使用Dr. Elephant作为开发流程的一部分,线上任务强制达到绿色级别。

分享阅读中文原文:https://www.infoq.com/cn/news/2016/04/Dr-Elephant-LinkedIn
分享于都英文原文:https://engineering.linkedin.com/blog/2016/04/dr-elephant-open-source-self-serve-performance-tuning-hadoop-spark 查看全部
本文来源于全球最大的职业社交网站LinkedIn领英,文章版权归作者本人所有。
 
今天LinkedIn宣布开源Dr. Elephant,Dr. Elephant能够很好地帮助用户理解、分析和优化Hadoop和Spark的工作流。LinkedIn在去年第八届Hadoop Summit上第一次在社区呈现。

动机​
Hadoop是一个分布式数据存储和大数据处理框架,体量大、组件复杂,因而每个组件的性能优化就显得异常重要。在优化底层硬件资源,网络架构,OS和其它堆栈的同时,也需要对集群上运行的任务进行优化。
 
什么是Dr. Elephant?
Dr. Elephant是一个Hadoop 和Spark的性能监控和调优工具。Dr. Elephant能自动化收集所有指标,进行数据分析,并以简单易用的方式进行呈现。Dr. Elephant的目标是提高开发人员的开发效率和增加集群任务调试的高效性。Dr. Elephant支持对Hadoop和Spark任务进行可插拔式、配置化以及基于规则的启发式job性能分析,并且根据分析结果给出合适的建议来指导如何调优使任务更有效率。
 
为什么选择Dr. Elephant?
其它开源或者商用Hadoop优化工具都是收集系统资源指标和监控集群资源信息,关注点仅在于简化Hadoop集群的发布和管理,而很少有工具是来帮助Hadoop优化任务流。这些工具不支持Hadoop集群的规模化和Hadoop框架的增长,而Dr. Elephant支持Hadoop生态的各种框架,并且很容易的扩展到新的框架,已经支持Spark。Dr. Elephant让用户更清晰的掌握Hadoop和Spark原理,并帮助其轻松的优化任务。
 
Dr. Elephant如何工作?
Dr. Elephant从YARN Resource Manager周期性获取所有最近运行成功和失败的应用列表,然后从Job History Server中攫取每个应用的元数据,包括job counters、任务配置和任务数据。有了元数据后,Dr. Elephant进行启发式分析,并生成每个任务的诊断报告,从而进行相应的整体优化。Dr. Elephant将会标记出五个等级问题严重性,指出潜在的性能问题。
Elephant.png

图1 Dr. Elephant问题等级
Elephant2.png

图2 Dr. Elephant的面板
 
通过Dr. Elephant的UI查看数据面板,见图2,这里显示集群的相关统计信息,包括集群上运行的任务数,需要优化的任务数,以及基于启发式分析发现的严重任务数。图中是最近24小时的Dr. Elephant分析的所有最近的任务。
Elephant3.png

图3 Dr. Elephant的搜索页
 
Dr. Elephant提供一个搜索功能,帮助用户通过任务ID/应用ID,执行ID,任务类型,任务严重程度和任务完成时间等来搜索任务。
Elephant4.png

图4 Dr. Elephant任务页面
 
当你点击指定的搜索结果,会显示完整的任务信息,并能查看相互引用的任务流。
Elephant5.png

图5 Dr. Elephant的工作流历史
Elephant6.png

图6 Dr. Elephant的任务历史
 
Dr. Elephant的任务历史和工作流历史可以帮用户比较前后执行的区别。Dr. Elephant通过启发式计算出每个任务执行的性能得分并作图。这个图表可以帮助用户很直观的分析哪个性能好。
 
家庭医生
Dr. Elephant在LinkedIn非常受欢迎,大家钟爱其简洁性。Dr. Elephant通过简单的诊断可以解决百分之八十的问题。Dr. Elephant提供任务级别的建议帮助用户去理解和优化Hadoop工作流。

Dr. Elephant已经完全和Hadoop生态整合。在LinkedIn,开发人员使用Dr. Elephant作为开发流程的一部分,线上任务强制达到绿色级别。


分享阅读中文原文:https://www.infoq.com/cn/news/2016/04/Dr-Elephant-LinkedIn
分享于都英文原文:https://engineering.linkedin.com/blog/2016/04/dr-elephant-open-source-self-serve-performance-tuning-hadoop-spark


开源运维管理平台OpsSam

开源项目koyo 发表了文章 • 0 个评论 • 2520 次浏览 • 2016-04-18 13:58 • 来自相关话题

基于saltstack、cobbler和zabbix接口的集成管理开源运维平台
一、基本环境​
os: Centos 6.6 x86_64
python: 2.6.6
 
二、依赖关系
1、python依赖包pip install -r requirements.txt2、epel源rpm安装包mysql-5.5.19
subversion-1.6.11-10
rabbitmq-server-3.1.5-1
cobbler-2.6.3-13、其他接口a)cobbler服务器
cobbler-2.6.3-1.el6.noarch
cobbler-web-2.6.3-1.el6.noarch

b)saltstack服务器
salt 2014.7.2
salt-api-2014.7.2

c)svn服务器
subversion-1.6.11-114、启动数据库a)创建登陆用户
/etc/init.d/mysqld start
mysqladmin -uroot password opsSAM

b)创建数据库:
mysql -uroot -popsSAM -e "create database opsSAM;"

c)生成项目数据表:
cd /your/sitepath/
python manage.py syncdb

d)创建初始登陆用户admin(密码admin):
mysql -uroot -popsSAM -e "insert into opsSAM.opsSAM_users(username,password,admin) values ('admin','f313176847fcc0c82dae8e51e0e40b1d33ec7f0fabf279c164f8541ec99f8a06f473b3b1439a41a898aa2f70f076a59bb671e17bed52471cb9adfee9701a7fb5','是');"5、设置djangoopsSAM.opsSAM.settings.py
opsSAM.opsSAM.settings_local.py
 三、django生产环境安装(非必须)
推荐nginx+uwsgi(略)
安装后按照实际情况修改scripts/supervisord.conf相关django配置[program:django]

command=/usr/bin/python /your/sitepath/opsSAM/manage.py runserver 0.0.0.0:80
 四、启动cp scripts/supervisord.conf /etc/
cp scripts/supervisord /etc/init.d/
chmod 755 /etc/init.d/supervisord
/etc/init.d/supervisord start
五、访问地址
opsSAM前台: http://your_ip/
opsSAM后台: http://your_ip/admin
rabbitmq: http://your_ip:15672/
celery flower: http://your_ip:5555/
supervisor: http://your_ip:9001/
 
六、Demo效果图
























项目地址:https://github.com/MorningSong/opsSAM 查看全部
基于saltstack、cobbler和zabbix接口的集成管理开源运维平台
一、基本环境​
os: Centos 6.6 x86_64
python: 2.6.6
 
二、依赖关系
1、python依赖包
pip install -r requirements.txt
2、epel源rpm安装包
mysql-5.5.19
subversion-1.6.11-10
rabbitmq-server-3.1.5-1
cobbler-2.6.3-1
3、其他接口
a)cobbler服务器
cobbler-2.6.3-1.el6.noarch
cobbler-web-2.6.3-1.el6.noarch

b)saltstack服务器
salt 2014.7.2
salt-api-2014.7.2

c)svn服务器
subversion-1.6.11-11
4、启动数据库
a)创建登陆用户
/etc/init.d/mysqld start
mysqladmin -uroot password opsSAM

b)创建数据库:
mysql -uroot -popsSAM -e "create database opsSAM;"

c)生成项目数据表:
cd /your/sitepath/
python manage.py syncdb

d)创建初始登陆用户admin(密码admin):
mysql -uroot -popsSAM -e "insert into opsSAM.opsSAM_users(username,password,admin) values ('admin','f313176847fcc0c82dae8e51e0e40b1d33ec7f0fabf279c164f8541ec99f8a06f473b3b1439a41a898aa2f70f076a59bb671e17bed52471cb9adfee9701a7fb5','是');"
5、设置django
opsSAM.opsSAM.settings.py
opsSAM.opsSAM.settings_local.py

 三、django生产环境安装(非必须)
推荐nginx+uwsgi(略)
安装后按照实际情况修改scripts/supervisord.conf相关django配置
[program:django]

command=/usr/bin/python /your/sitepath/opsSAM/manage.py runserver 0.0.0.0:80

 四、启动
cp scripts/supervisord.conf /etc/
cp scripts/supervisord /etc/init.d/
chmod 755 /etc/init.d/supervisord
/etc/init.d/supervisord start

五、访问地址
opsSAM前台: http://your_ip/
opsSAM后台: http://your_ip/admin
rabbitmq: http://your_ip:15672/
celery flower: http://your_ip:5555/
supervisor: http://your_ip:9001/
 
六、Demo效果图
login.png

index.jpg

system_install.png

exec_command.png

deploy_app.png

deploy_code.png

项目地址:https://github.com/MorningSong/opsSAM
开放源码软件(open-source)是一个新名词,它被定义为描述其源码可以被公众使用的软件,并且此软件的使用,修改和分发也不受许可证的限制。开放源码软件通常是有copyright的,它的许可证可能包含这样一些限制: 蓄意的保护它的开放源码状态,著者身份的公告,或者开发的控制。“开放源码”正在被公众利益软件组织注册为认证标记,这也是创立正式的开放源码定义的一种手段。