Hadoop hdfs to elasticsearch

问题描述 投票:0回答:1

如何从HDFS读取数据,然后发送到Elasticsearch并显示在kibana仪表盘上?

我知道ES-Hadoop有一个连接器,可以双向发送数据,但我的问题是在第一阶段从HDFS中拉数据。

最可行的方案是什么?请给我提供几个方案。

有用的信息。我有一个Hadoop的HDFS系统,正在汇总日志... 所以我必须把这些日志放到弹性搜索上,然后显示在Kibana仪表板上。

hadoop elasticsearch hdfs kibana
1个回答
0
投票

你当然可以创建一个bash脚本,定期运行并调用

hdfs dfs -copyToLocal <src> <dest>

来复制hdfs中的所有数据。

或者使用Hadoop的FileSystem java api创建一个输入流,从hadoop中流转数据。

public static FileSystem getFS(String hadoopUser) { 
    UserGroupInformation ugi = UserGroupInformation
                .createRemoteUser(hadoopUser);

    return ugi.doAs(new PrivilegedAction<FileSystem>() {

        @Override
        public FileSystem run() {
            Configuration conf = new Configuration();
            try {
                return FileSystem.get(conf);
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }
    });

    return null;
}

然后...

FileSystem fs = getFS("hdfs");

InputStream in = fs.open(new Path("/path/to/hdfs/file"));

//do stuff with your input stream here...

关于把数据放到elasticsearch上,你可以做一些类似Netflix用inviso做的事情(在github上搜索inviso,看看jesindex_cluster_stats.py就知道了)。基本上,写一个与elasticsearch集成的python脚本,让这个脚本每隔几分钟运行一次,解析你从HDFS中提取的数据,随后将这些数据存储到elasticsearch中。

© www.soinside.com 2019 - 2024. All rights reserved.