0%

操作Parquet

由于性能问题,将文件存储格式从text改为了Parquet,那么hadoop如何读取Parquet文件呢?

先添加一下parquet依赖

1
2
3
4
5
6
7
8
9
10
11
<!--添加Parquet依赖-->
<dependency>
<groupId>org.apache.parquet</groupId>
<artifactId>parquet-column</artifactId>
<version>1.8.1</version>
</dependency>
<dependency>
<groupId>org.apache.parquet</groupId>
<artifactId>parquet-hadoop</artifactId>
<version>1.8.1</version>
</dependency>
阅读全文 »

安全模式

namenode在启动的时候,首先将映射文件fsimage载入内存,并执行编辑日志edits中的各项操作,一旦在内存中成功建立文件系统元数据的映射,则创建一个新的fsimage文件(这个操作不需要SecondaryNameNode)和一个空的编辑日志。在这个过程中namenode是运行在安全模式的,即此时是只读的。

在安全模式下,NameNode收集各DataNode的报告,当数据块达到最小副本数以上时,会被认为是安全的,在一定比例的数据块被确定安全后,再过一段时间安全模式结束

Nginx防盗链

1
2
3
4
5
6
# 源站点验证
valid_referers *.zhhll.icu
# 如果Referer Header头不符合valid_referers指令设置的有效Referer,变量$invalid_referer将被设置为1
if($invalid_referer){
return 403;
}

事务日志

Elasticsearch通过使用事务日志(transaction log)来解决事务问题,事务日志用来保存所有未提交的事务,当有错误发生时,事务日志将会被检查,必要时会再次执行某些操作,以确保没有丢失任何更改。事务日志中的信息与存储介质之间的同步(同时清空事务日志)被称为事务日志刷新(flushing)。

1
2
3
除了可以自动刷新还可以使用api手动刷新
http://localhost:9200/_flush
http://localhost:9200/index1/_flush

事务日志配置

  • index.translog.flush_threshold_period 默认30分钟,控制了强制自动事务日志刷新的时间间隔
  • index.translog.flush_threshold_ops 当索引更改操作次数超过该数时,强制进行实物刷新操作
  • index.translog.flush_threshold_size 事务日志的最大容量,超过该值时,强制进行事务刷新
  • index.translog.interval 连续两次事务日志刷新检查之间的周期
  • index.gateway.local.sync 通过fsync系统调用同步事务日志数据的频率
  • index.translog.disable_flush 禁用事务日志刷新

查询二次评分

Elasticsearch中提供了查询二次评分机制,能对查询的返回文档的前若干个文档重新打分。

其过程是先取得某个查询的命中文档的前N个,然后执行某个公式为这些文档重新打分

如下示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
"query": {
"match_all": {}
},
"rescore": {
"query": {
"rescore_query": {
"function_score": {
"query": {
"match_all": {}
},
"script_score": {
"script": "doc['publishTime'].value"
}
}
}
}
}
}

此时文档的得分就会变成publishTime字段的值再加上原本查询的得分

阅读全文 »

查询和过滤

elasticsearch中有查询和过滤两种功能,过滤只是用特定条件来筛选结果的,而查询不仅筛选结果还会影响文档的得分,计算得分会消耗额外的CPU