我为了满足历史数据的保存和检索往往选择这种神操作

使用场景

ElasticSearch是一款开源的非常火爆的文档索引引擎, 大小公司都比较青睐的一款做日志检索、分析、查询的工具。

但是ElasticSearch的数据依靠本地磁盘来做存储,虽然有三副本机制来保障数据的可靠性,但是磁盘的容量毕竟有限,如果希望保留更长时间的历史数据,如30天至半年的数据,ElasticSearch的本地存储就显得捉襟见肘了。

为了更好的满足历史数据的保存和检索,推荐一种非常靠谱的存储解决方案:ES + CHDFS。

云 HDFS(Cloud HDFS,CHDFS)是腾讯云存储团队新推出的一款完全兼容HDFS协议,主要解决大数据场景下海量数据存储和数据分析,能够为大数据用户在无需更改现有代码的基础上,将本地自建的 HDFS 文件系统无缝迁移至CHDFS 上。可以将ES中的历史索引数据移动到CHDFS保存。

接下来,我们将一步一步地教您如何打通ES到CHDFS的数据流。

准备工作

在开始前,需要做以下几件事情:

1. 搭建hadoop环境,2.x和3.x均可。也可以使用腾讯云EMR套件,省时省力;

2. 安装ES-hadoop插件,作者下载的是elasticsearch-hadoop-7.4.2.jar(下载地址:http://t.cn/AiempNYA),下载后将插件安装到hadoop组件的每台服务器上的classpath中(可以使用java classpath命令查看);

3. 下载CHDFS插件,并且配置好CHDFS的插件(查看详情:http://b6i.cn/3GtN5);

4. 创建CHDFS文件系统并配置好权限组和挂载点(查看详情:http://t.cn/AiemO04v);

当上面4个步骤均准备成功,恭喜你,离成功越来越近了。

编写备份代码

编写MapReduce程序,编写自己的Mapper,示例:

编写Main函数,指定ES的实例及索引,示例代码:

编译代码生成jar包,例如es-chdfs-0.0.1-SNAPSHOT.jar

备份数据

当生成好jar包之后,在hadoop环境执行启动job命令, 例如:

hadoop jar es-chdfs-0.0.1-SNAPSHOT.jar org.chdfs.es_chdfs.E2HJob01 ofs://f4mnighxmwd-tiW9.chdfs.ap-beijing.myqcloud.com/e2h

其中,指定CHDFS的存储路径,

ofs://f4mnighxmwd-tiW9.chdfs.ap-beijing.myqcloud.com/e2h

注意:由于mapreduce的限制,需要确保e2h目录是不存在的。

查看效果

提交MapReduce后,可以查看hadoop监控页面观察作业是否正常结束。

如果正常结束后,可以查看CHDFS上的文件是否有生成。如果有看到类似如下的显示,恭喜你,成功完成ES到CHDFS的数据转储。

数据分析

备份成功后,可以释放ElasticSearch上历史数据,极大节省了ElasticSearch上的存储成本。

CHDFS可以无缝对接各种主流的大数据套件,如Spark、hive、tez、presto、MapReduce、腾讯云EMR等。数据落地到CHDFS后,可以轻松高效的使用常见大数据组件来进行数据的进一步分析,为客户创造更多的价值。

你可能感兴趣的:(我为了满足历史数据的保存和检索往往选择这种神操作)