美文网首页
实训总结20171008

实训总结20171008

作者: 韩志俊 | 来源:发表于2017-10-08 16:34 被阅读0次

    ElasticSearch

    Redis c++编写代码量小,消耗内存大

    SSDB 360的k-v硬盘

    fastDFS阿里k-vNginx

    大数据4V理论

    ❶Volume,数据规模大,从T升到P、E;

    ❷Variety,数据类型多,非结构化的数据、语音、地理位置信息、视频等数据;

    ❸Value,数据价值高,具有很大的商业价值,支持深层数据挖掘;

    ❹Velocity,数据处理速度快,要求实时处理而非传统的存储性数据进行数据库处理。

    层次架构

    基础概念

    接近实时:Elasticsearch是一个接近实时的搜索平台。这意味着,从索引一个文档直到这个文档能够被搜索到有一个轻微的延迟(通常是1秒)

    集群(cluster):一个集群就是由一个或多个节点组织在一起,它们共同持有你整个的数据,并一起提供索引和搜索功能。

    节点(node):一个节点是你集群中的一个服务器,作为集群的一部分,它存储你的数据,参与集群的索引和搜索功能。一个节点可以通过配置集群名称的方式来加入一个指定的集群

    索引(index):一个索引就是一个拥有几分相似特征的文档的集合。

    类型(type):在一个索引中,你可以定义一种或多种类型。一个类型是你的索引的一个逻辑上的分类/分区,其语义完全由你来定。

    文档(document):一个文档是一个可被索引的基础信息单元。

    分片和复制(shards & replicas)

    一个索引可以存储超出单个结点硬件限制的大量数据。比如,一个具有10亿文档的索引占据1TB的磁盘空间,而任一节点都没有这样大的磁盘空间;或者单个节点处理搜索请求,响应太慢。

    为了解决这个问题,Elasticsearch提供了将索引划分成多份的能力,这些份就叫做分片。当你创建一个索引的时候,你可以指定你想要的分片的数量。每个分片本身也是一个功能完善并且独立的“索引”,这个“索引”可以被放置到集群中的任何节点上。

    分片之所以重要,主要有两方面的原因:

    允许你水平分割/扩展你的内容容量

    允许你在分片(潜在地,位于多个节点上)之上进行分布式的、并行的操作,进而提高性能/吞吐量。

    怎样聚合回搜索请求,是完全由Elasticsearch管理的

    ES部署

    1.Cluster

    cluster.name: elasticsearch

    设置ElasticSearch集群的名字,默认的集群名字为elasticsearch,如果想要让某一ElasticSearch节点加入集群只需指定cluster.name

    2. Node

    node.name:“Franz

    Kafka“,设置ElasticSearch节点的名字

    node.master: true,设置节点是否为主节点

    node.data: true,设置节点是否存储索引分片

    3. Index

    index.number_of_shards: 5,设置索引的分片数,默认为5个分片

    index.number_of_replicas: 1,设置索引的副本数,默认为1个副本

    4. Paths

    path.data: /data/esdata,设置索引数据的存储路径

    path.logs: /data/eslogs,设置日志数据的存储路径

    ES常用命令

    _cat系列

    _cat系列提供了一系列查询elasticsearch集群状态的接口。你可以通过执行

    curl -XGET localhost:9201/_cat

    获取所有_cat系列的操作

    http://47.94.18.202:9201/

    /_cat/allocation ?v

    /_cat/shards ?v

    /_cat/shards/{index} ?v

    /_cat/master ?v

    /_cat/nodes ?v

    /_cat/indices ?v

    /_cat/indices/{index} ?v

    /_cat/segments ?v

    /_cat/segments/{index} ?v

    /_cat/count ?v

    /_cat/count/{index} ?v

    /_cat/recovery ?v

    /_cat/recovery/{index} ?v

    /_cat/health ?v

    /_cat/pending_tasks ?v

    /_cat/aliases ?v

    /_cat/aliases/{alias} ?v

    /_cat/thread_pool ?v

    /_cat/plugins ?v

    /_cat/fielddata ?v

    /_cat/fielddata/{fields} ?v

    你也可以后面加一个v,让输出内容表格显示表头

    ²_cluster系列

    1、查询设置集群状态

    curl -XGET localhost:9201/_cluster/health?pretty=true

    pretty=true表示格式化输出

    level=indices表示显示索引状态

    level=shards表示显示分片信息

    2、curl -XGET localhost:9201/_cluster/stats?pretty=true

    显示集群系统信息,包括CPU JVM等等

    3、curl -XGET localhost:9201/_cluster/state?pretty=true

    集群的详细信息。包括节点、分片等。

    3、curl -XGETlocalhost:9201/_cluster/pending_tasks?pretty=true

    ²_nodes系列

    1、查询节点的状态

    curl -XGET ‘http://localhost:9201/_nodes/stats?pretty=true’

    curl -XGET ‘http://localhost:9201/_nodes/192.168.1.2/stats?pretty=true’

    curl -XGET ‘http://localhost:9201/_nodes/process’

    curl -XGET ‘http://localhost:9201/_nodes/_all/process’

    curl -XGET ‘http://localhost:9201/_nodes/192.168.1.2,192.168.1.3/jvm,process’

    curl -XGET‘http://localhost:9201/_nodes/192.168.1.2,192.168.1.3/info/jvm,process’

    curl -XGET ‘http://localhost:9201/_nodes/192.168.1.2,192.168.1.3/_all

    curl -XGET ‘http://localhost:9201/_nodes/hot_threads

    插件有kopf、head、sql

    脑裂问题:由于某些节点的失效,部分节点的网络连接会断开,并形成一个与原集群一样名字的集群,这种情况成为集群脑裂(split-brain)现象。这个问题非常危险,因为两个新形成的集群会同时索引和修改集群的数据。

    正常情况下,集群中的所有的节点,应该对集群中master的选择是一致的,这样获得的状态信息也应该是一致的,不一致的状态信息,说明不同的节点对master节点的选择出现了异常——也就是所谓的脑裂问题。这样的脑裂状态直接让节点失去了集群的正确状态,导致集群不能正常工作。

    相关文章

      网友评论

          本文标题:实训总结20171008

          本文链接:https://www.haomeiwen.com/subject/zntyyxtx.html