您的位置:首页 > 其它

17-2-25周总结 (ES head安装)

2017-02-25 19:22 169 查看
研究生第一周,适应新生活,熟悉并参与项目组的项目开发。下面总结下一周内接触的新知识点,以及对下一周工作做出计划。

1.Flume
Flume是一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。
Flume可以进行日志收集、数据处理。Flume支持在日志系统中定制各类数据发送方,用于收集数据;Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力 Flume提供了从console(控制台)、RPC(Thrift-RPC)、text(文件)、tail(UNIX tail)、syslog(syslog日志系统,支持TCP和UDP等2种模式),exec(命令执行)等数据源上收集数据的能力。



flume的核心是把数据从数据源(source)收集过来,在将收集到的数据送到指定的目的地(sink)。为了保证输送的过程一定成功,在送到目的地(sink)之前,会先缓存数据(channel),待数据真正到达目的地(sink)后,flume在删除自己缓存的数据。 
在整个数据的传输的过程中,流动的是event,即事务保证是在event级别进行的。event将传输的数据进行封装,是flume传输数据的基本单位,如果是文本文件,通常是一行记录,event也是事务的基本单位。event从source,流向channel,再到sink,本身为一个字节数组,并可携带headers(头信息)信息。event代表着一个数据的最小完整单元,从外部数据源来,向外部的目的地去。 

有关Flume的配置过程,是由项目组两位主力军完成。(项目开发真的很需要沟通能力,划重点)
▲Flume Taildir Source大概应该是收集到的日志源,存疑
答:Taildir是Flume的一种收集方式,日志更新后便会自动获取新的日志资源(组友解释)
然后日志标记的实现采用Flume的Interceptor机制
Flume的日志收集Agent能开放一个端口收集Syslog日志,交换机和防火墙都有Syslog功能,并将日志发送到指定IP和端口上。接入应用就是修改Flume的配置文件,配置推送服务,使配置生效。
2.Kafka
Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。
这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。对于像Hadoop的一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消费。
Kafka集群包含一个或多个服务器,这种服务器被称为broker。
每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。(物理上不同Topic的消息分开存储,逻辑上一个Topic的消息虽然保存于一个或多个broker上但用户只需指定消息的Topic即可生产或消费数据而不必关心数据存于何处)
Partition是物理上的概念,每个Topic包含一个或多个Partition。

Producer负责发布消息到Kafka broker

Consumer消息消费者,向Kafka broker读取消息的客户端。

每个Consumer属于一个特定的Consumer Group(可为每个Consumer指定group name,若不指定则属于默认的group)。
▲为什么Flume收集日志后要存储在Kafka,存疑
答:Kafka利用消息队列解决高吞吐量引起的阻塞问题(组友解释)

3.Zookeeper(协调Kafka)
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。ZooKeeper为分布式系统提供了高效且易于使用的协同服务,它可以为分布式应用提供相当多的服务,诸如统一命名服务,配置管理,状态同步和组服务等。ZooKeeper接口简单,我们不必过多地纠结在分布式系统编程难于处理的同步和一致性问题上,你可以使用ZooKeeper提供的现成(off-the-shelf)服务来实现来实现分布式系统额配置管理、组管理、Leader选举等功能。

4.ElasticSearch
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
ES可根据插入的数据自动创建Type及其Mapping,这里Mapping相当于Schema,Type相当于Table。
我们建立一个网站或应用程序,并要添加搜索功能,希望我们的搜索解决方案要快,有一个零配置和一个完全免费的搜索模式,能够简单地使用JSON通过HTTP的索引数据,希望我们的搜索服务器始终可用,能够一台开始并扩展到数百,要实时搜索,要简单的多租户,希望建立一个云的解决方案
e69f
。Elasticsearch旨在解决所有这些问题和更多的问题。
在cmd命令行进入安装目录,再进入 bin目录,运行elasticsearch.bat命令,启动成功后。在浏览器中输入:http://localhost:9200/
elasticsearch插件elasticsearch-head安装:在cmd命令行中进入安装目录,再进入
bin目录,运行以下命令:   plugin -install mobz/elasticsearch-head

然后安装成功后,在浏览器中输入:http://localhost:9200/_plugin/head/,可以看到效果。

也可以从http://mobz.github.io/elasticsearch-head/ 安装ElasticSearch
Head插件
elasticsearch-head是一个elasticsearch的集群管理工具,它是完全由HTML5编写的独立网页程序,你可以通过插件把它集成到es。
运行ES后,打开http://localhost:9200/_plugin/head/
在地址栏输入ES服务器的IP地址和端口点connect就可以连接到集群。

下面是连接后的视图。此处贴一张随处可见的图,在主界面可以看到es集群的基本信息(如:节点情况,索引情况)。



界面的右边有些按钮,如:node stats, cluster nodes,这些是直接请求es的相关状态的api,返回结果为json,如下图:



在索引下面有info和action两个按钮。info是可以查看索引的状态和mapping的定义。action是对索引进行操作,如:添加别名、刷新、关闭索引,删除索引等。



browser浏览界面,这个界面可以同时查看多个索引的数据,也可以查询指定字段的数据。



Structured Query查询界面,这个界面可以对某个索引进行一些复杂查询,如下面这个例子是查询product索引,构造boolquery,title字段里查询“产品”关键词,price范围为10到100的记录。



Any Request任意请求界面,这个界面可以说是个rest的客户端,可以通过它来对es进行一些请求操作或测试api接口,下面这个例子是把product索引的副本数设置为1,更多的api可以到es官网查询。



这里分布式搜索elasticsearch集群管理工具head简介原文:http://blog.csdn.net/laigood12345/article/details/8193758

6.Json
JSON(JavaScript Object
Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#Java、JavaScript、PerlPython等)。这些特性使JSON成为理想的数据交换语言。
易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。

JSON 语法是 JavaScript 对象表示语法的子集:数据在键值对中;数据由逗号分隔;花括号保存对象;方括号保存数组。

JSON 数据的书写格式是:名称/值对。名称/值对组合中的名称写在前面(在双引号中),值对写在后面(同样在双引号中),中间用冒号隔开:"firstName":"John"。

json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构。

1、对象:对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。

2、数组:数组在js中是中括号“[]”括起来的内容,数据结构为 ["java","javascript","vb",...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。

经过对象、数组2种结构就可以组合成复杂的数据结构了。

5.Rest
REST全称:REpresentational State Transfer,即表现层状态转移。(请说人话。。)

据说是一组架构约束条件的原则。日志平台各业务接口以REST方式对外提供。

▲REST到底是什么,存疑

6.Axure RP
额,这是本周在项目组里的微弱贡献。。

Axure RP是美国Axure Software Solution公司旗舰产品,是一个专业的快速原型设计工具,让负责定义需求和规格、设计功能和界面的专家(对,就是我233)能够快速创建应用软件或Web网站的线框图、流程图、原型和规格说明文档。作为专业的原型设计工具,它能快速、高效的创建原型,同时支持多人协作设计和版本控制管理。

因为甲方迫切要看到此系统开发出的可视化界面是怎样的,所以我连续画了三天图。。而且被老师与项目组成员各种嫌弃。。好吧,总算可是设计出了老师满意的可视化界面,希望下周甲方能看到我们为此做出的努力(这估计也只能是个希望

7.下周工作计划
◆熟悉ES的Java API的查询方法

◆MongoDB:根据现有的实体类设计,将日志相关的配置信息存入MongoDB,并根据读取的配置内容生成相应的Flume配置文件

◆ES的大存储量下的访问速度测试
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: