elk学习

am_ccl 2019-07-21 03:03:25
# ELK第一天 ## 课程内容回顾 1、sparkStreaming的基本介绍:实时的处理的模块 sparkCore ==> RDD ==> sparkContext sparkSQL ==> df/ds ==> sparkSession sparkStreaming ==> DStream ==> StreamingContext 2、SparkStreaming的原理与架构 每隔一段时间计算一次累计的数据,将每一段时间转换成为一个个的RDD运行在sparkCore上面 3、DStream的入门案例 接收socket的数据,实现单词计数的统计 4、sparkStreaming的数据源 ​ 1、文件数据源 ​ 2、自定义数据源 通过自定义receiver接收器,实现数据的接入 搞定 ​ 3、rdd的队列 用于测试使用 高级数据源 ​ flume的数据源 知道 ​ kafka数据源 ​ 0.8版本 ​ Receiver DStream:数据消费的offset保存在zk当中,造成重复消费 at least once ​ DirectDstream: 数据消费的offset保存在了默认的topic里面,造成数据丢失 at most once ​ 0.10版本 搞定 ​ DirectDstream :配置使用我们手动提交offset,保证数据不会丢失也不会重复消费 exactly once DStream的转换 DStream的容错 ## 课程大纲 1、ELK的基本介绍 2、es的安装部署 3、es的索引管理 4、索引映射关系定义mappings 5、索引库的管理settings 6、分页解决方案 7、IK分词器 8、分片交互过程 9、使用javaAPI访问ES集群 ## 1、ELK的基本介绍 ELK是一个集中式的日志处理系统,主要包含了三个框架 E:elasticsearch 分布式的搜索引擎,类似于solr L: logstash 日志数据采集的框架 , 类似于flume K:kibana 数据报表展示的工具 类似于echarts ## 2、es的基本概述 es是Elasticsearch的简称,一款基于lucene的全文检索的框架,天生的支持分布式,隐藏了lucene的复杂性,变得简单易用 lucene是Doug Cutting nutch 全网爬虫的框架 爬回来的数据太多怎么办?? 一个是检索的问题 一个是存储的问题 lucene 解决检索的问题 hadoop 分布式文件存储 es类似于数据库 index索引库 ==》 types ==》 fields 字段 mysql 数据库DB ==> table 表 ==》 columns 字段 mappings:定义我们的索引库里面的字段的属性,包括分词,存储,索引 document:文档对象,我们的数据都是封装在document里面了 settings:定义了我们索引库的分片数以及索引库的副本数 集群:cluster,所有的node组织起来就变成了一个cluster 节点Node:每一台es服务器称之为一个node ## 3、ES的安装部署 1:es不能使用root用户来启动 es安装参见文档,一步步来,不要调过 2、elasticsearch-head的插件的安装,es的管理工具,任意一台机器安装都行 这个插件专门用于管理 es的集群,查看es当中的数据等等 nodejs是js的运行环境,通过nodejs的平台,可以实现js操作后台的服务 zookeeper hadoop hive flume sqoop azkaban spark solr es 大数据运维 3、kibana的安装, kibana是一个可视化的软件,可以用这个软件来实现es索引库的增删改查 创建索引库 ``` curl -XPUT http://node01:9200/blog01/?pretty ``` 插入文档信息 curl是linux当中的一个命令,主要用于发送请求 ``` curl -XPUT http://node01:9200/blog01/article/1?pretty -d '{"id": "1", "title": "What is lucene"}' ``` 通过系统id来查询数据 ``` curl -XGET http://node01:9200/blog01/article/1?pretty ``` 查询数据 ``` curl -XGET "http://node01:9200/blog01/article/_search?q=title:elasticsearch" 返回值 { "took": 84, "timed_out": false, "_shards": { "total": 5, "successful": 5, "skipped": 0, "failed": 0 }, "hits": { "total": 1, "max_score": 0.2876821, "hits": [ { "_index": "blog01", "_type": "article", "_id": "1", "_score": 0.2876821, "_source": { "id": "1", "title": " What is elasticsearch" } } ] } } ``` ## 4、es当中的mappings mappings是es当中的映射,可以提前定义好我们的字段要不要分词,要不要索引,要不要存储 mappings当中的字段类型一旦确定了,就不能更改了 name :text ==> int 通过mappings可以定义我们字段的类型,例如age int "zhangsan" 提前定义好mappings可以约束我们的数据的类型 注意:如果我们没有提前定义好我们的索引库里面字段的类型,那么就会根据我们第一次产生的类型来自动推断 es当中查询出来的数据,都是封装到一个javaBean里面去, ​ Long Double 60 60 60.0 66.666 66 66.666 查看索引库字段类型 ``` GET /document/article/_mapping { "document": { "mappings": { "article": { "properties": { "author": { "type": "text", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } } }, "title": { "type": "text", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } } }, "titleScore": { "type": "long" } } } } } } ``` 我们可以在创建索引库的时候,提前定义好我们的索引库的表字段类型 ``` PUT document { "mappings": { "article" : { "properties": { "title" : {"type": "text"} , "author" : {"type": "text"} , "titleScore" : {"type": "double"} } } } } ``` 继续添加字段 ``` POST /school/_mapping/logs { "properties": {"number" : {"type": "text"}} } ``` ## 5、es当中的settings settings主要在es当中用于设置索引库的分片数以及副本数 ## 6、es当中的分页操作 scroll深分页:通过缓存来实现我们的数据的查询,查询出来的数据,我们可以缓存到内存当中去,下次查询的时候,直接从内存当中获取 缺陷:内存可能不够用 通过scroll的方式,我们可以先查询缓存当中的数据,如果缓存当中没有数据,再去通过form+size的方式进行查询,查询出来的数据可以放到缓存 浅分页:通过form + size实现浅分页 数据量太大的时候,效率显著降低 查询100页的数据,查询出前100页的所有的数据,然后过滤掉前99页的数据 如果每页数据10条,查询第1000页,需要查询出来的数据总量是 1000 * 10 = 10000条 int pageNum = 2 int pageSize = 5 from = (2 -1)* 5 ``` GET /us/_search?pretty { "from" : 0 , "size" : 5 } GET /us/_search?pretty { "from" : 5 , "size" : 5 } ``` ## 7、es当中的分词器 IK 分词器 夏天太热,能穿多少穿多少 冬天太冷,能穿多少穿多少 人要是行,干一行行一行,一行行行行行 热词的更新 小脑斧 GET _analyze?pretty { ​ "analyzer": "ik_max_word", ​ "text": "小脑斧,老铁,老弟,你怎么肥事" } ## 8、es当中的分片交互过程 ## 9、es当中的javaAPI操作 参见代码操作 ## 课程总结 1:elk的基本介绍 2:es当中的核心概念 ​ index:索引库 ​ types:类似于表的概念 ​ field:字段 ​ mappings:定义字段的属性,分词,存储,索引 ​ setting:定义索引库副本数以及分片数 ​ node:es服务器的节点 ​ cluster:es服务器集群 3:es的安装部署 搞定 ​ 一定要记得不要使用root用户来安装 ​ 安装es-head插件 一定要记得用编译好的插件,不要在线安装 ​ kibana 用于操作es集群,实现数据的增删改查 4:使用kibana 通过curl的方式实现es当中的索引的管理 增删改查 知道 5:mappings以及setting的设置 知道 6:分页解决方案 知道 ​ scroll深分页 ​ from + size 浅分页 7:分词器 搞定 ​ 配置远程的分词方案 8:分片交互过程 了解 9:javaAPI操作es集群 搞定
...全文
88 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

51,411

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧