Uso de Apache Hive con ElasticSearch

Uso de Apache Hive con ElasticSearch

  • Orquestación
6 min de lectura Actualizado Oct 24, 2017

Puntos clave: Utilizar Apache Hive con ElasticSearch mejora el análisis de datos al permitir consultas SQL en los registros del servidor web. La guía detalla los procesos de instalación, configuración y carga de datos.

  • Hive permite consultas SQL y funciones definidas por el usuario para mejorar la gestión de datos.
  • ElasticSearch está esencial para el almacenamiento y consulta de registros, clave para la ciberseguridad y la monitorización de operaciones.

Aquí explicamos cómo utilizar Apache Hive con ElasticSearch. Copiaremos un inicio de sesión del servidor web de Apache en ElasticSearch y luego utilizamos Hive SQL para consultarlo.

¿Por qué hacer esto? Hive te permite escribir funciones definidas por el usuario y utilizar SQL (en realidad HQL), que es más fácil de manejar y ofrece más funciones que ElasticSearch, cuyo lenguaje de consulta están Lucene Query. Por ejemplo, tú puedes unir conjuntos de datos con Hive. Y tú puedes ejecutar análisis avanzados contra Hive usando Spark ML (aprendizaje automático) u otra herramienta.

Como hemos señalado antes, algunos tutoriales son escritos para mostrar cómo almacenar datos de Hive en ElasticSearch. Pero eso no está lógico, ya que el objetivo principal de ES está recopilar registros de servidores web, cortafuegos, etc., y ponerlos en un solo lugar (ES) donde puedan consultarse. Esto está para ciberseguridad y monitorización de operaciones.

ElasticSearch proporciona el conector elasticsearch-hadoop para que te lea (y escribas) documentos de Es. Lo que ocurre cuando tú haces eso está creando datos en las tablas Hive desde ES. Hive no almacena los datos en ES.

Instala Hive

Primero, instala Hive siguiendo estas instrucciones. Después de esto, MySQL estará funcionando. Si no está te Obtén el error No se puede instanciar org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient.

Y instala Hadoop.

Luego descarga el conector Hive-Hadoop, descarga un conector Hive-Hadoop y cópialo a $HIVE_HOME/lib

    cp /home/walker/Documents/jars/elasticsearch-hadoop-5.5.2.jar $HIVE_HOME/lib

Comienza Hadoop usando start-dfs.sh. Solo están necesario Comienza Yarn también si te son ejecutando en un clúster.

Comienza Colmena

Comienza la colmena usando:

    hive

O tú puedes ejecutarlo en modo depuración para Ve y luego corregir errores en tu instalación. Por ejemplo, si te olvidas de copiar el conector jar a la carpeta lib, aparecerá un error de clase no encontrado.

    hive --hiveconf hive.root.logger=DEBUG,console

te también puedes Ve stdout aquí /tmp/(tu userid)/hive.log

Instala ElasticSearch y carga algunos datos

Explicando cómo instala están ES más allá del alcance de estos datos. te puedes seguir sus instrucciones aquí.

Descargar datos de muestra y subirlo

Necesitamos algunos datos para analizar. te descargar un registro de ejemplo de Apache desde aquí.

te tendrás que instala desactivar para descomprimirlo:

    unrar x apache-access_log.rar

Luego copia esta configuración de logstash de Apache de aquí y llama apache.conf. Colócala en la carpeta raíz de la instalación de logstash.

    input {
file {
path => "/tmp/access_log"
start_position => "beginning"
}
}< filter {
if [path] =~ "access" {
mutate { replace => { "type" => "apache_access" } }
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
}
date {
match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
}
stdout { codec => rubydebug }
}

Luego Comienza logstash con ese archivo de configuración.

    bin/logstash -f apache.conf

Luego copia los datos a la ruta del archivo /tmp/access_log indicada en el archivo apache.conf.

    cp access_log /tmp/

La pantalla Comienza a repetir la salida así mientras logstash se pone a trabajar:

    {
"path" => "/tmp/access_log",
"@timestamp" => 2017-09-21T12:16:33.346Z,
"@version" => "1",
"host" => "eurovps",
"message" => "d97082.upc-d.chello.nl - - [12/Mar/2004:13:25:45 -0800] \"GET /SpamAssassin.html HTTP/1.1\" 200 7368\r",
"type" => "apache_access",
"tags" => [
[0] "_grokparsefailure"
]
}

Ahora, si tú consultas ES desde la línea de comandos, te deberías Ve el nuevo índice y el recuento de documentos:

    curl http://localhost:9200/_cat/indices?v
health status index      uuid      pri rep docs.count docs.deleted store.size pri.store.size
yellow open logstash-2017.09.21 DBRrjIlvQtG67ddb7qUnxw 5 1 1550

Luego abre Kibana y Ve los datos allí también.

Ahora dile a Hive que lea estos datos creando una tabla así:

    CREATE EXTERNAL TABLE apachelog (
path string,
timex timestamp,
Version int,
Host string,
Message string,
Index string
)
STORED BY 'org.elasticsearch.hadoop.hive.EsStorageHandler'
TBLPROPERTIES( 'es.nodes.wan.only' = 'true', 'es.resource' = 'logstash-2017.09.21', 'es.query' = '?q=*');

es.resource está el índice ES.

Es.nodes.wan.only resolverá problemas de conectividad de red (es decir, si Hive se queja de eso).

El host se pondrá por defecto en localhost.

ES Crea esto:

    describe apachelog;
OK
path          string          from deserializer
timex         timestamp       from deserializer
version       int             from deserializer
host          string          from deserializer
message       string          from deserializer
index         string          from deserializer

Ahora, no configuramos bien grok o habría analizado el campo de mensaje en Apache. Pero podemos extraer la dirección IP nosotros mismos así:

    select regexp_extract(message, '^([0-9]{1,3}\\.){3}[0-9]{1,3}',0) as ip from apachelog;

Ahora podemos hacer una consulta para mostrar qué direcciones IP han accedido al servidor web más veces. Hacemos esto en dos pasos:

  1. Crea tabla intermedia iptab.
  2. Consulta tabla iptab.

Aquí está el conteo:

    create table iptab as select regexp_extract(message, '^([0-9]{1,3}\\.){3}[0-9]{1,3}',0) as ip from apachelog;

Aquí está el conteo:

    select count(ip) as c, ip from iptab group by ip order by c desc;
452        64.242.88.10
270         10.0.0.153
20                    207.195.59.160
14                    128.227.88.79
14                   212.92.37.62
13                    203.147.138.233
12                    195.246.13.119
7          145.253.208.9
7          142.27.64.35
4          194.151.73.43
4          61.165.64.6
4          80.58.14.235
4          208.247.148.12
3          67.131.107.5
3          61.9.4.61
3          80.58.33.42
2          200.160.249.68
1          80.58.35.111
1          66.213.206.2
1          64.246.94.152
1          64.246.94.141
1          4.37.97.186
1          219.95.17.51
1          216.139.185.45
1          213.181.81.4
1          200.222.33.33
1          195.230.181.122
1          195.11.231.210
1          12.22.207.235
1          212.21.228.26

Estas publicaciones son mías y no representan necesariamente la posición, estrategias u opinión de BMC.

Más de Orquestación

Suscríbete al Informe

Al registrarse para esta oferta te son confirmar que te leído y aceptado la Política de Privacidad de BMC.

Gracias te

Tú te has suscrito a The Brief
El Brief abarca la orquestación de mainframe y empresa—BMC AMI y Control-M—y la investigación de analistas, despliegues de clientes y eventos en ambas áreas.