精华内容
下载资源
问答
  • elasticsearch-hadoop使用示例 在elasticsearch-hadoop的具体使用中碰到了几个问题,有必要记录一下,避免下次遇到时又要重新研究。 利用spark读取es数据源的简单示例 import org.elasticsearch.spark.sql._ ...

    elasticsearch-hadoop使用示例

    在elasticsearch-hadoop的具体使用中碰到了几个问题,有必要记录一下,避免下次遇到时又要重新研究。

    利用spark读取es数据源的简单示例

    import org.elasticsearch.spark.sql._
    
    val esOptions = Map("es.nodes"->"192.168.1.2,192.168.1.3", "es.scroll.size"->"1000", "es.field.read.as.array.include"->"SampleField")
    
    val esDF = sqlContext.read.format("org.elasticsearch.spark.sql").options(esOptions).load("sampleindex/es-spark")
    
    esDF.registerTempTable("esdemotbl")

    es.scroll.size 一次性读入的记录数,默认是10, 如果不设置为大一点的值,要从es中读取1亿条数据,那将是一个漫长的过程

    es.field.read.as.array.include 有的字段在es中是以string类型存储,但其中包含逗号(,), spark默认认为这是数组类型,如果读取这种字段的话,就会报错,怎么办,那就用es.field.read.as.array.include来显式指明

    spark读取es中数据的时候,partition数目取决于es中指定index的shard数目,为了获得比较高的并发读取性能,建议适当设置shard数目,为什么是适当,因为具体取决于集群规模等多种因素。

    字段名的大小写问题

    在hive中,字段名是_大小写不敏感_的, 但在ES中是大小写敏感的

    你说,这又怎么样。 呵呵, 这意味着不做特殊处理,永远无法读出es中大写字段名的内容,你看到的将是满屏的_NULL_

    这该怎么破,很简单,指定 es.mapping.names

    比如在es中,字段名为DemoField, 要读出其中的内容,hive表的字义就该这样写

    create external table es_demo_tbl(
    demofield string) 
    STORED BY 'org.elasticsearch.hadoop.hive.EsStorageHandler'
    TBLPROPERTIES('es.nodes'='192.168.1.2,192.168.1.3', 'es.resource'='demoindex/sample',
    'es.mapping.names'='demofield:DemoField')

    注意是先hive中的字段名,然后是es中的字段名

    Elasticsearch 运维实战之集群规划

    规划一个可用于生产环境的elasticsearch集群。

    集群节点划分

    整个集群的节点分为以下三种主要类型

    1. Master nodes -- 负责维护集群状态,不保存index数据, 硬件要求: 一般性的机器就可以,给es进程分配16g内存
    2. Data Nodes -- 只保存index的数据,不被选举为Master nodes 硬件要求: 配置要求越高越好,使用大硬盘,有条件可以上SSD硬盘
    3. Client Nodes -- 主要用于负载均衡,不被选举为Master node, 也不保存index数据 硬件要求: 24核CPU, 64G内存或更高

    一个合理的集群应该包含三个master nodes, 1到多个data nodes, 最少一个client node

    安装与配置

    通用配置,以centos为例,使用rpm安装包

    sudo rpm -ivh elasticsearch-version.rpm
    sudo chkconfig --add elasticsearch

    修改/etc/sysconfig/elasticsearch, 修改ES_HEAP_SIZE和JAVA_OPTS的内容,注意elasticsearch建议使用的最大内存是32G,

    ES_HEAP_SIZE=32g
    JAVA_OPTS="-Xms32g"

    修改/etc/security/limits.conf, 添加如下内容

    * hard memlock unlimited
    * soft memlock unlimited

    /etc/elasticsearch/elasticsearch.yml 内容配置

    • master节点
    node.master: true
    node.data: false
    discovery.zen.ping.unicast.hosts: ["master1","master2","master3"]
    network.host: ${HOSTNAME}
    • data节点
    node.master: false
    node.data: true
    discovery.zen.ping.unicast.hosts: ["master1","master2","master3"]
    network.host: ${HOSTNAME}

    如果为elasticsearch配置了多块硬盘,可以修改 DATA_DIR 的值,多个目录使用逗号(,)分开

    • client节点
    node.master: false
    node.data: false
    discovery.zen.ping.unicast.hosts: ["master1","master2","master3"]
    network.host: ${HOSTNAME}

    启动elasticsearch

    sudo service elasticsearch start

    需要注意的是elasticsearch在centos中使用service elasticsearch restart有时不能达到效果,需要分开来做

    sudo kill -9 `pgrep -f elasticsearch`
    sudo service elasticsearch start

    nginx反向代理

    为了记录针对集群的查询内容,建议使用nginx来做反向代理,nginx安装在client node上,conf.d/default.conf 最简单的配置如下

    upstream elasticsearch {
            server 127.0.0.1:9200;
    }
    
    server {
        gzip on;
        access_log /var/log/nginx/access.log combined;
        listen       80 default_server;
    
        server_name  _;
    
        #charset koi8-r;
    
        #access_log  logs/host.access.log  main;
    
        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;
    
        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
    
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_pass      http://elasticsearch;
        }
    
       error_page  404              /404.html;
        location = /404.html {
            root   /usr/share/nginx/html;
        }
    
        # redirect server error pages to the static page /50x.html
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    }

    插件安装

    建议安装如下插件

    • kopf 兼容es 1.x, 2.x

    kopf

    ./elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf/{branch|version}
    • head 兼容es 1.x
    • bigdesk 兼容es 1.x

    presto-elasticsearch connector

    elasticsearch搜索功能强劲,就是查询语法复杂,presto提供了非常open的plugin机制,我改进了下原有的presto-elasticsearch connector,现发布于github

    功能改进点

    • 自动加载elasticsearch schema
    • 支持分片数据加载
    • predication pushdown,注意由于presto spi接口的原因,目前只支持and类型的过滤器下推,对于OR表达式不支持,不支持like类型的过滤器下推
    • 避免重复加载schema

    运行办法
    在etc/catalog目录下添加es.properties即可,内容如下

    connector.name=elasticsearch
    elasticsearch-server=localhost
    elasticsearch-port=9300
    elasticsearch-clustername=elasticsearch_demo

    时间仓促,错误在所难免,欢迎批评指正。

    展开全文
  • ES-Hadoop 6.x和更高版本与Elasticsearch 1.X , 2.X , 5.X和6.X兼容 ES-Hadoop 5.x和更高版本与Elasticsearch 1.X , 2.X和5.X兼容 ES-Hadoop 2.2.x及更高版本与Elasticsearch 1.X和2.X兼容 ES-2.0.x版本的Hadoop...
  • Elasticsearch Hadoop 作为一个完美的工具,用来连接ElasticsearchHadoop 的生态系统。
  • Elasticsearch Hadoop作为一个完美的工具,用来连接ElasticsearchHadoop的生态系统。通过Kibana技术,Elasticsearch Hadoop很容易从Hadoop生态系统中获得大数据分析的结果。 由尔玛·舒拉著的《Elasticsearch集成...
  • 连接快速搜索与大数据分析Elasticsearch For Apache HadoopES-Hadoop)是解决用户既需要进行多种分析,又需要进行快速搜索的需求的。 最新版本ES-Hadoop 2.2 与 Elasticsearch 2.x 能够完美结合

    连接快速搜索与大数据分析

    Elasticsearch For Apache Hadoop(ES-Hadoop)是解决用户既需要进行多种分析,又需要进行快速搜索的需求的。
    整体架构
    最新版本ES-Hadoop 2.2 与 Elasticsearch 2.x 能够完美结合

    展开全文
  • Elasticsearch Hadoop作为一个完美的工具,用来连接 ElasticsearchHadoop 的生态系统。通过Kibana技术,Elasticsearch Hadoop很容易从Hadoop 生态系统中获得大数据分析的结果。 本书全面介绍Elasticsearch ...
  • Elasticsearch for Hadoop

    2016-04-20 20:23:48
    Elasticsearch-Hadoop serves as a perfect tool to bridge the worlds of Elasticsearch and Hadoop ecosystem to get best out of both the worlds. Powered with Kibana, this stack makes it a cakewalk to get...
  • ES-HadoopElasticsearch推出的专门用于对接Hadoop生态的工具,可以让数据在ElasticsearchHadoop之间双向移动,无缝衔接ElasticsearchHadoop服务,充分使用Elasticsearch的快速搜索及Hadoop批处理能力,实现...

    ES-Hadoop是Elasticsearch推出的专门用于对接Hadoop生态的工具,可以让数据在Elasticsearch和Hadoop之间双向移动,无缝衔接Elasticsearch与Hadoop服务,充分使用Elasticsearch的快速搜索及Hadoop批处理能力,实现交互式数据处理。本文介绍如何通过ES-Hadoop实现Hadoop的Hive服务读写Elasticsearch数据。

    Spark是一种通用的大数据计算框架,拥有Hadoop MapReduce所具有的计算优点,能够通过内存缓存数据为大型数据集提供快速的迭代功能。与MapReduce相比,减少了中间数据读取磁盘的过程,进而提高了处理能力。本文介绍如何通过ES-Hadoop实现Hadoop的Spark服务读写Elasticsearch数据。

    阿里云Elasticsearch兼容开源Elasticsearch的功能,以及Security、Machine Learning、Graph、APM等商业功能,致力于数据分析、数据搜索等场景服务。支持5.5.3、6.3.2、6.7.0、6.8.0和7.4.0等版本,并提供了商业插件X-Pack服务。在开源Elasticsearch的基础上提供企业级权限管控、安全监控告警、自动报表生成等功能。本文使用阿里云Elasticsearch为您演示,单击此处即可免费试用。

    准备工作

    1. 创建阿里云Elasticsearch实例,并开启自动创建索引功能。

      具体操作步骤请参见创建阿里云Elasticsearch实例开启自动创建索引。本文以6.7.0版本的实例为例。
      注意 在生产环境中,建议关闭自动创建索引功能,提前创建好索引和Mapping。由于本文仅用于测试,因此开启了自动创建索引功能。

    2. 创建与Elasticsearch实例在同一专有网络下的E-MapReduce(以下简称EMR)实例。

      实例配置如下:

    • 产品版本:EMR-3.29.0

    • 必选服务:Spark(2.4.5),其他服务保持默认

      具体操作步骤,请参见创建集群

      注意 Elasticsearch实例的私网访问白名单默认为0.0.0.0/0,您可在安全配置页面查看,如果未使用默认配置,您还需要在白名单中加入EMR集群的内网IP地址:

    1. 准备Java环境,要求JDK版本为8.0及以上。

    编写并运行Spark任务

    1. 准备测试数据。

      1. 登录E-MapReduce控制台,获取Master节点的IP地址,并通过SSH登录对应的ECS机器。

        具体操作步骤,请参见使用SSH连接主节点

      2. 将测试数据写入文件中。

        本文使用的JSON数据示例如下,将该数据保存在 http_log.txt 文件中。

        {"id": 1, "name": "zhangsan", "birth": "1990-01-01", "addr": "No.969, wenyixi Rd, yuhang, hangzhou"}
        {"id": 2, "name": "lisi", "birth": "1991-01-01", "addr": "No.556, xixi Rd, xihu, hangzhou"}
        {"id": 3, "name": "wangwu", "birth": "1992-01-01", "addr": "No.699 wangshang Rd, binjiang, hangzhou"}
        
      3. 执行以下命令,将测试数据上传至EMR Master节点的 tmp/hadoop-es 文件中。

        hadoop fs -put http_log.txt /tmp/hadoop-es
        
    2. 配置pom依赖。

      创建Java Maven工程,并将如下的pom依赖添加到Java工程的pom.xml文件中。

      <dependencies>
          <dependency>
              <groupId>org.apache.spark</groupId>
              <artifactId>spark-core_2.12</artifactId>
              <version>2.4.5</version>
          </dependency>
          <dependency>
              <groupId>org.apache.spark</groupId>
              <artifactId>spark-sql_2.11</artifactId>
              <version>2.4.5</version>
          </dependency>
          <dependency>
              <groupId>org.elasticsearch</groupId>
              <artifactId>elasticsearch-spark-20_2.11</artifactId>
              <version>6.7.0</version>
          </dependency>
      </dependencies>
      

      注意 请确保pom依赖中版本与云服务对应版本保持一致,例如elasticsearch-spark-20_2.11版本与阿里云Elasticsearch版本一致;spark-core_2.12与HDFS版本一致。

    3. 编写示例代码。

      1. 写数据

        以下示例代码用来将测试数据写入Elasticsearch的company索引中。

        import java.util.Map;
        import java.util.concurrent.atomic.AtomicInteger;
        import org.apache.spark.SparkConf;
        import org.apache.spark.SparkContext;
        import org.apache.spark.api.java.JavaRDD;
        import org.apache.spark.api.java.function.Function;
        import org.apache.spark.sql.Row;
        import org.apache.spark.sql.SparkSession;
        import org.elasticsearch.spark.rdd.api.java.JavaEsSpark;
        import org.spark_project.guava.collect.ImmutableMap;
        public class SparkWriteEs {
            public static void main(String[] args) {
                SparkConf conf = new SparkConf();
                conf.setAppName("Es-write");
                conf.set("es.nodes", "es-cn-n6w1o1x0w001c****.elasticsearch.aliyuncs.com");
                conf.set("es.net.http.auth.user", "elastic");
                conf.set("es.net.http.auth.pass", "xxxxxx");
                conf.set("es.nodes.wan.only", "true");
                conf.set("es.nodes.discovery","false");
                conf.set("es.input.use.sliced.partitions","false");
                SparkSession ss = new SparkSession(new SparkContext(conf));
                final AtomicInteger employeesNo = new AtomicInteger(0);
                //以下的/tmp/hadoop-es/http_log.txt需要替换为您测试数据的路径。
                JavaRDD<Map<Object, ?>> javaRDD = ss.read().text("/tmp/hadoop-es/http_log.txt")
                        .javaRDD().map((Function<Row, Map<Object, ?>>) row -> ImmutableMap.of("employees"   employeesNo.getAndAdd(1), row.mkString()));
                JavaEsSpark.saveToEs(javaRDD, "company/_doc");
            }
        }
        
      2. 读数据

        以下示例代码用来读取上一步写入Elasticsearch的数据,并进行打印。

        import org.apache.spark.SparkConf;
        import org.apache.spark.api.java.JavaPairRDD;
        import org.apache.spark.api.java.JavaSparkContext;
        import org.elasticsearch.spark.rdd.api.java.JavaEsSpark;
        import  java.util.Map;
        public class ReadES {
            public static void main(String[] args) {
                SparkConf  conf = new SparkConf().setAppName("readEs").setMaster("local[*]")
                        .set("es.nodes", "es-cn-n6w1o1x0w001c****.elasticsearch.aliyuncs.com")
                        .set("es.port", "9200")
                        .set("es.net.http.auth.user", "elastic")
                        .set("es.net.http.auth.pass", "xxxxxx")
                        .set("es.nodes.wan.only", "true")
                        .set("es.nodes.discovery","false")
                        .set("es.input.use.sliced.partitions","false")
                        .set("es.resource", "company/_doc")
                        .set("es.scroll.size","500");
                JavaSparkContext sc = new JavaSparkContext(conf);
                JavaPairRDD<String, Map<String, Object>> rdd = JavaEsSpark.esRDD(sc);
                for ( Map<String, Object> item : rdd.values().collect()) {
                    System.out.println(item);
                }
                sc.stop();
            }
        }
        

      参数说明

      参数默认值说明
      es.nodeslocalhost指定阿里云Elasticsearch实例的访问地址,建议使用内网地址,可在实例的基本信息页面查看。更多信息,请参见查看实例的基本信息
      es.port9200Elasticsearch实例的访问端口号。
      es.net.http.auth.userelasticElasticsearch实例的访问用户名。
      说明 如果程序中指定elastic账号访问Elasticsearch服务,后续在修改elastic账号对应密码后需要一些时间来生效,在密码生效期间会影响服务访问,因此不建议通过elastic来访问。建议在Kibana控制台中创建一个符合预期的Role角色用户进行访问,详情请参见创建角色创建用户
      es.net.http.auth.pass/对应用户的密码,在创建实例时指定。如果忘记可进行重置,具体操作步骤,请参见重置实例访问密码
      es.nodes.wan.onlyfalse开启Elasticsearch集群在云上使用虚拟IP进行连接,是否进行节点嗅探:
      true:设置; false:不设置
      es.nodes.discoverytrue是否禁用节点发现:
      true:禁用 ;false:不禁用
      注意 使用阿里云Elasticsearch,必须将此参数设置为false。
      es.input.use.sliced.partitionstrue是否使用slice分区:
      true:使用。设置为true,可能会导致索引在预读阶段的时间明显变长,有时会远远超出查询数据所耗费的时间。建议设置为false,以提高查询效率; false:不使用。
      es.index.auto.createtrue通过Hadoop组件向Elasticsearch集群写入数据,是否自动创建不存在的index:
      true:自动创建 ; false:不会自动创建
      es.resource/指定要读写的index和type。
      es.mapping.names/表字段与Elasticsearch的索引字段名映射。

      更多的ES-Hadoop配置项说明,请参见官方配置说明

    4. 将代码打成Jar包,上传至EMR客户端机器(例如Gateway或EMR集群主节点)。

    5. 在EMR客户端机器上,运行如下命令执行Spark程序。

      • 写数据

        cd /usr/lib/spark-current
        ./bin/spark-submit  --master yarn --executor-cores 1 --class "SparkWriteEs" /root/spark_es.jar
        

        注意 /root/spark_es.jar 需要替换为您Jar包上传的路径。

      • 读数据

        cd /usr/lib/spark-current
        ./bin/spark-submit  --master yarn --executor-cores 1 --class "ReadES"  /root/spark_es.jar
        

        读数据成功后,打印结果如下。在这里插入图片描述

    验证结果

    1. 登录对应阿里云Elasticsearch实例的Kibana控制台。

      具体操作步骤请参见登录Kibana控制台

    2. 在左侧导航栏,单击 Dev Tools

    3. Console 中,执行以下命令,查看通过Spark任务写入的数据。

      GET company/_search
      {
        "query": {
          "match_all": {}
        }
      }
      

      查询成功后,返回结果如下。在这里插入图片描述

    总结

    本文以阿里云Elasticsearch和EMR为例,介绍了如何通过ES-Hadoop,实现Spark读写阿里云Elasticsearch数据。与其他EMR组件相比,ES-Hadoop与Spark的集成,不仅包括RDD,还包括Spark Streaming、scale、DataSet与Spark SQL等,您可以根据需求进行配置。详细信息,请参见Apache Spark support

    展开全文
  • ES-HadoopElasticsearch推出的专门用于对接Hadoop生态的工具,可以让数据在ElasticsearchHadoop之间双向移动,无缝衔接ElasticsearchHadoop服务,充分使用Elasticsearch的快速搜索及Hadoop批处理能力,实现...

    ES-Hadoop是Elasticsearch推出的专门用于对接Hadoop生态的工具,可以让数据在Elasticsearch和Hadoop之间双向移动,无缝衔接Elasticsearch与Hadoop服务,充分使用Elasticsearch的快速搜索及Hadoop批处理能力,实现交互式数据处理。本文介绍如何通过ES-Hadoop实现Hadoop的Hive服务读写Elasticsearch数据。

    Hadoop生态的优势是处理大规模数据集,但是其缺点也很明显,就是当用于交互式分析时,查询时延会比较长。而Elasticsearch擅长于交互式分析,对于很多查询类型,特别是对于Ad-hoc查询(即席查询),可以达到秒级。ES-Hadoop的推出提供了一种组合两者优势的可能性。使用ES-Hadoop,您只需要对代码进行很小的改动,即可快速处理存储在Elasticsearch中的数据,并且能够享受到Elasticsearch带来的加速效果。

    ES-Hadoop的原理是将Elasticsearch作为MR、Spark或Hive等数据处理引擎的数据源,在计算存储分离的架构中扮演存储的角色。这和 MR、Spark或Hive的数据源并无差异,但相对于这些数据源,Elasticsearch具有更快的数据选择过滤能力。这种能力正是分析引擎最为关键的能力之一。

    在这里插入图片描述

    阿里云Elasticsearch兼容开源Elasticsearch的功能,以及Security、Machine Learning、Graph、APM等商业功能,致力于数据分析、数据搜索等场景服务。支持5.5.3、6.3.2、6.7.0、6.8.0和7.4.0等版本,并提供了商业插件X-Pack服务。在开源Elasticsearch的基础上提供企业级权限管控、安全监控告警、自动报表生成等功能。本文使用阿里云Elasticsearch为您演示,单击此处即可免费试用。

    操作流程

    1. 准备工作

      创建同一专有网络下的阿里云Elasticsearch和E-MapReduce(以下简称EMR)实例、关闭Elasticsearch实例的自动创建索引功能并创建索引和Mapping、下载与Elasticsearch实例版本一致的ES-Hadoop安装包。

    2. [步骤一:上传ES-Hadoop JAR包至HDFS](#步骤一:上传ES-Hadoop JAR包至HDFS)

      将已下载的ES-Hadoop安装包上传至EMR Master节点的HDFS目录下。

    3. 步骤二:创建Hive外表

      创建Hive外表,与Elasticsearch索引中的字段进行映射。

    4. 步骤三:通过Hive写入索引数据

      通过HiveSQL,向Elasticsearch实例的索引中写入数据。

    5. 步骤四:通过Hive读取索引数据

      通过HiveSQL,读取Elasticsearch实例中的索引数据。

    准备工作

    1. 创建阿里云Elasticsearch实例。

      本文使用6.7.0版本的实例,具体操作步骤请参见创建阿里云Elasticsearch实例

    2. 关闭实例的自动创建索引功能,并提前创建索引和Mapping。

      开启自动创建索引功能后,可能会导致Elasticsearch自动创建的索引类型和您预期的类型不一致。比如您定义了一个字段age,为INT类型,开启自动创建索引后,可能将其索引成了LONG类型,因此建议手动创建索引。本文使用的索引和Mapping如下。

      PUT company
      {
        "mappings": {
          "_doc": {
            "properties": {
              "id": {
                "type": "long"
              },
              "name": {
                "type": "text",
                "fields": {
                  "keyword": {
                    "type": "keyword",
                    "ignore_above": 256
                  }
                }
              },
              "birth": {
                "type": "text"
              },
              "addr": {
                "type": "text"
              }
            }
          }
        },
        "settings": {
          "index": {
            "number_of_shards": "5",
            "number_of_replicas": "1"
          }
        }
      }
      
    3. 创建与Elasticsearch实例在同一专有网络下的EMR集群。

      注意 Elasticsearch实例的私网访问白名单默认为0.0.0.0/0,您可在安全配置页面查看,如果未使用默认配置,您还需要在白名单中加入EMR集群的内网IP地址:

    4. 下载ES-Hadoop安装包,其版本需要与Elasticsearch实例保持一致。

      本文使用elasticsearch-hadoop-6.7.0.zip。

    步骤一:上传ES-Hadoop JAR包至HDFS

    1. 登录E-MapReduce控制台,获取Master节点的IP地址,并通过SSH登录对应的ECS机器。

      具体操作步骤请参见使用SSH连接主节点

    2. 将已下载的elasticsearch-hadoop-6.7.0.zip上传至Master节点,并解压获得elasticsearch-hadoop-6.7.0.jar。

    3. 创建HDFS目录,将elasticsearch-hadoop-6.7.0.jar上传至该目录下。

      hadoop fs -mkdir /tmp/hadoop-es
      hadoop fs -put /tmp/hadoop-es/elasticsearch-hadoop-6.7.0.jar /tmp/hadoop-es
      

    步骤二:创建Hive外表

    1. 在EMR控制台的 数据开发 模块中,创建 HiveSQL 类型的作业。

      具体操作步骤请参见Hive SQL作业配置
      在这里插入图片描述

    2. 配置作业,创建外表。

      作业配置如下。

      ####添加jar包,仅对当前会话有效########
      add jar hdfs:///tmp/hadoop-es/elasticsearch-hadoop-hive-6.7.0.jar;
      ####创建hive外表,与es索引进行映射#####
      CREATE EXTERNAL table IF NOT EXISTS company( 
         id BIGINT,
         name STRING,
         birth STRING,
         addr STRING 
      )  
      STORED BY 'org.elasticsearch.hadoop.hive.EsStorageHandler' 
      TBLPROPERTIES(  
          'es.nodes' = ' http://es-cn-mp91kzb8m0009****.elasticsearch.aliyuncs.com',
          'es.port' = '9200',
          'es.net.ssl' = 'true', 
          'es.nodes.wan.only' = 'true', 
          'es.nodes.discovery'='false',
          'es.input.json' = 'false',
          'es.resource' = 'company/employees',
          'es.net.http.auth.user' = 'elastic', 
          'es.net.http.auth.pass' = 'xxxxxx'
      );
      

      ES-Hadoop相关参数说明

      参数默认值说明
      es.nodeslocalhost指定阿里云Elasticsearch实例的访问地址,建议使用内网地址,可在实例的基本信息页面查看,详情请参见查看实例的基本信息
      es.port9200Elasticsearch实例的访问端口号。
      es.net.http.auth.user/Elasticsearch实例的访问用户名。
      es.net.http.auth.pass/Elasticsearch实例的访问密码。
      es.nodes.wan.onlyfalse开启Elasticsearch集群在云上使用虚拟IP进行连接,是否进行节点嗅探: * true:设置 * false:不设置
      es.nodes.discoverytrue是否禁用节点发现: * true:禁用 * false:不禁用
      es.index.auto.createyes通过Hadoop组件向Elasticsearch集群写入数据,是否自动创建不存在的index: * true:自动创建 * false:不会自动创建
      es.resource/指定要读写的index和type。
      es.mapping.names/表字段与Elasticsearch的索引字段名映射。
      es.read.metadatafalse操作Elasticsearch字段涉及到 _id 之类的内部字段,请开启此属性。

      更多的ES-Hadoop配置项说明,请参见官方配置说明

    3. 保存并运行作业。 在这里插入图片描述

      运行成功后,结果如下。
      在这里插入图片描述

    步骤三:通过Hive写入索引数据

    1. 创建一个 HiveSQL 类型的写数据作业。

      作业配置如下。

      add jar hdfs:///tmp/hadoop-es/elasticsearch-hadoop-hive-6.7.0.jar;
      INSERT INTO TABLE company VALUES (1, "zhangsan", "1990-01-01","No.969, wenyixi Rd, yuhang, hangzhou");
      INSERT INTO TABLE company VALUES (2, "lisi", "1991-01-01", "No.556, xixi Rd, xihu, hangzhou");
      INSERT INTO TABLE company VALUES (3, "wangwu", "1992-01-01", "No.699 wangshang Rd, binjiang, hangzhou");
      
    2. 保存并运行作业。

      在这里插入图片描述

    3. 运行成功后,登录Elasticsearch实例的Kibana控制台,查看company索引数据。

      登录Kibana控制台的具体操作步骤,请参见登录Kibana控制台。您可以在Kibana控制台中,执行以下命令查看company索引数据。

      GET company/_search
      

      执行成功后,返回结果如下。
      在这里插入图片描述

    步骤四:通过Hive读取索引数据

    1. 创建一个 HiveSQL 类型的读数据作业。

      作业配置如下。

      add jar hdfs:///tmp/hadoop-es/elasticsearch-hadoop-hive-6.7.0.jar;
      select * from company;
      
    2. 保存并运行作业。
      在这里插入图片描述

    总结

    本文以阿里云EMR和Elasticsearch为例,介绍了如何通过Elasticsearch强大的ES-Hadoop组件,在Hive上进行数据的查询和写入,可以帮助您将Elasticsearch与Hadoop生态组件结合起来,实现更灵活的数据分析。如果您需要了解ES-Hadoop与Hive更高级的配置,请参见Elasticsearch官方说明文档

    展开全文
  • ES-HadoopElasticsearch推出的专门用于对接Hadoop生态的工具,可以让数据在ElasticsearchHadoop之间双向移动,无缝衔接ElasticsearchHadoop服务,充分使用Elasticsearch的快速搜索及Hadoop批处理能力,实现...
  • elasticsearch-hadoop-5.6.7

    2018-02-05 18:54:19
    elasticsearch-hadoop是一个深度集成HadoopElasticSearch的项目,也是ES官方来维护的一个子项目,通过实现HadoopES之间的输入输出,可以在Hadoop里面对ES集群的数据进行读取和写入,充分发挥Map-Reduce并行处理...
  • 包含 elasticsearch-hadoop-6.6.1.jar elasticsearch-hadoop-hive-6.6.1.jar elasticsearch-spark-20_2.11-6.6.1.jar elasticsearch-storm-6.6.1.jar 等
  • Elasticsearch集成Hadoop最佳实践PDF版本,帮助你快速搭建Hadoop+ES搜索服务器集群
  • Elasticsearch-Hadoop的使用问题总结

    万次阅读 2020-02-06 23:10:00
    scala – Elasticsearch-Hadoop库无法连接到docker org.elasticsearch.hadoop.rest.EsHadoopNoNodesLeftException: Connection error (check network and/or proxy settings)- all nodes failed; tried [[172.17...
  • elasticsearch-hadoop-5.5.0.jar 是elasticsearch 结合hive和hadoop的包,用于hive和elasticsearch文档的映射
  • elasticsearch2.1 elasticsearch-hadoop安装

    千次阅读 2015-12-16 17:20:15
    1、下载elasticsearch-hadoop-2.2.0beta1.jar,拷贝到hive的lib目录中,然后以如下方式打开hive命令窗口: bin/hive -hiveconf hive.aux.jars.path=/root/hive/lib/elasticsearch-hadoop-2.2.0beta1.jar 这个...
  • ElasticSearch集成Hadoop最佳实践
  • es for apache hadoop(elasticsearch-hadoop.jar)允许hadoop作业(mapreduce、hive、pig、cascading、spark)与es交互。 At the core, elasticsearch-hadoop integrates two distributed systems: Hadoop, a ...
  • https://elasticsearch.cn/article/6194
  • 兼容hadoopelasticsearch,对应hadoop版本为2.4.0
  • elasticsearch-hadoop-5.2.1

    2017-03-03 11:40:26
    elasticsearch-hadoop-5.2.1
  • elasticsearch-hadoop使用记录

    千次阅读 2015-11-18 18:13:14
    elasticsearch-hadoop是一个深度集成HadoopElasticSearch的项目,也是ES官方来维护的一个子项目,通过实现HadoopES之间的输入输出,可以在Hadoop里面对ES集群的数据进行读取和写入,充分发挥Map-Reduce并行处理...
  • Elasticsearch-Hadoop 介绍

    千次阅读 2019-06-16 22:03:30
    Elasticsearch-Hadoop (ES-Hadoop) 连接器将 Hadoop 海量的数据存储和深度加工能力与 Elasticsearch 实时搜索和 分析功能进行连接。它能够让您快速深入了解大数据,并让您在 Hadoop 生态系统中更好地开展工作。 对 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,816
精华内容 10,726
关键字:

elasticsearchhadoop