TDH 常见运维命令(部分)
通过一条命令来搜集所有节点下regionServer的Exception日志:
cat /etc/hosts | grep 172.16 | awk '{print $1}' | xargs -i ssh {} " grep Exception -R /var/log/hyperbase1/*log"
截图如下。日志较多截不完,就直接取消了
查找InceptorServer进程或者ES进程用到的jar包以及jar包对应的md5码
jps | grep InceptorServer| awk '{print $1}' |xargs -i jinfo {} | grep java.class.path|awk -F = "{print $2}" | xargs -d : -i echo {} | xargs md5sum
查看ES进程对应的线程以及通过shell命令来查看进程所用到的端口号
jps | grep Elasticsearch | awk '{print $1}' | xargs -i top -Hb -p {} netstat
快速查找某一个class所对应的jar包方法
find /usr/java/jdk1.7.0_71/lib -name "*jar" | awk '{print $1}' | xargs -i jar tf {} | grep JavaInterface
免密登录练习
正排索引与倒排索引的理解
倒排索引和正排索引都是检索的方式,正排索引是 先扫描 文档doc 从中找到相应的 word 词汇,在一些场景中比较适用,但是例如 根据关键词,找到相应的文档全文,就可能需要扫描文档结束后才知道
文档中是否存在 关键词,会比较不合理,因此 可以使用倒排索引,用关键词和文档的映射去找到关键词,定位文档,效率会有所提升。
FST与Hashmap对比的理解
FST 是 lucene4中的一种数据结构。在部分场景中,可以使用 FST 替代 HashMap。
同时 FST也有相应的优点。
结构更加紧凑,压缩相应的存储空间。不考虑输出,是一个无环的 DFA
通过curl命令来执行以下es api操作 创建索引、插入数据、查询数据、带条件查询数据
创建索引:curl -XPUT 'tdh198:9200/xue_test/?pretty'
插入数据:curl -XPUT 'tdh198:9200/xue_test/dev/1?pretty' -d '{
"firstname": "San",
"lastname": "Zhang",
"age": 26,
"on_board_date": "2015-10-31",
"hometown": "Beijing",
"school": "Nanjing University",
"married": false,
"about": "I love Beijing Opera"
}'
查询数据:curl -XGET 'tdh198:9200/xue_test/dev/1?pretty'
带条件查询数据:curl -XPOST 'tdh198:9200/xue_test/_search' -d '{
"query": {
"match_all":{}
}
}
在 search 界面中对应
数据对应为
构建索引时,number_of_shards 和 number_of_replicas 注意事项
每个硬盘一个shard,一个shard存储不要超过30G。
初次索引的时候,把 replica 设置为 0,提高性能;
ES通过Shard Replication 保证Node节点出现故障时出现数据的完整性。
在Relocating的时候,Replica 从Primary 进行Recover时,Primary会先Snapshot Lucene,
然后拷贝数据到Replica,最后通过回放Translog 保证数据的一致性。
常见的分词方式都有哪些及概述 (借鉴网上资料)
英文分词器:英文分词的基础是以空格切分为一个个的单词,但是不同的分词器会在此基础上存在细微的差别。在Transwarp Search中,可选的英文分词器有两种:一是标准分词器(standard analyzer):标准分词器根据Unicode Consortium的定义的单词边界(word boundaries)来切分文本,然后去掉大部分标点符号,最后,把所有词转为小写;二是语言分词器(english analyzer): english 分词器自带一套英语 停用词库 ——像 and 或 the 这些与语义无关的通用词。这些词被移除后,把所有词转为小写,并根据语法规则转化成词根。
中文分词器:不同于英文分词规则,中文难以用空格来分词,只能逐字切分,所以使用的是另外一套分词器。在Transwarp Search中可选的中文分词器有两种; 一是ik分词器: ik分词使用了“正向迭代最细粒度切分算法”,简单说来就是Segmenter会逐字识别词元,并去掉停用词,将能够分出来的词元全部输出; 二是mmseg分词器: mmseg分词器是基于正向最大匹配算法将文本切分为歧义最小的token。
常见运维命令 rest api 篇
_cat 查看 集群状态 设计 shard node cluster
_cat/segments
查看各index的segment详细信息,包括segment名, 所属shard, 内存/磁盘占用大小, 是否刷盘, 是否merge为compound文件等.
查看index详细信息(/_cat/indices)
查看集群中所有index的详细信息,包括index状态,shard个数(primary/replica),doc个数等,可参考help. 可以查看指定index的信息(/_cat/indices/${index})
查看alias详细信息(/_cat/aliases)
查看集群中所有alias信息,包括alias对应的index, 路由配置等. 可以查看指定alias的信息(/_cat/aliases/${alias}).
查看shard详细信息(/_cat/shards)
查看各shard的详细情况,包括shard的分布, 当前状态(对于分配失败的shard会有失败原因), doc数量, 磁盘占用情况, shard的访问情况(如所有get请求的成功/失败次数以及对应耗时等). 可以指定index只查看某个index的shard信息(/_cat/shards/${index}).
查看单节点分配信息(/_cat/allocation)
查看单节点的自定义属性(/_cat/nodeattrs)
查看集群当前状态(/_cat/health)
查看集群各个节点的当前状态(/_cat/nodes)
查看集群master节点(/_cat/master
查看集群fielddata内存占用情况(/_cat/fielddata)
查看集群doc数量(/_cat/count)
查看集群的pendingTask情况(/_cat/pending_tasks)
查看各个节点的插件信息
curl "tdh198:9200/_cat/plugins?v"
查看集群的recovery情况
curl -XGET 'tdh198:9200/_cat/recovery?v'
查看集群各节点的threadpool统计信息(/_cat/thread_pool)
curl "tdh198:9200/_cat/thread_pool?v"
部分效果图:
查看各个节点信息 插件信息
查看集群的recovery情况
curl -XGET 'tdh198:9200/_cat/recovery?v
查看集群各节点的threadpool统计信息(/_cat/thread_pool)
curl "tdh198:9200/_cat/thread_pool?v"