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:
- Crea tabla intermedia iptab.
- 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
Guía de ElasticSearch
- Tutorial de ElasticSearch para principiantes: Conceptos básicos de ElasticSearch
- Uso de Apache Hive con ElasticSearch
- Uso de ElasticSearch con Apache Spark
- Hoja de trucos de comandos de Curl ElasticSearch
- Ejemplo y explicación de actualización y explicación de Spark ElasticSearch Hadoop
- Cómo escribir datos de Apache Spark en ElasticSearch usando Python
- Sintaxis de búsqueda ElasticSearch y búsquedas booleanas y de agregación
- Consultas anidadas de ElasticSearch: Cómo buscar documentos incrustados
- ElasticSearch se une: Has_Child, consulta Has_parent
- Cómo configurar un clúster Elastic versión 7
- Cómo configurar Filebeat para nginx y ElasticSearch
- Uso de Beats y Logstash para enviar registros a ElasticSearch
- Cómo cargar un archivo CSV en ElasticSearch con Logstash
- Explicación de las agregaciones de ElasticSearch
- ¿Qué es el ELK Stack?
- Logstash 101: Uso de Logstash en una Canalización de Procesamiento de Datos
- Usar Kibana para ejecutar consultas en ElasticSearch usando el lenguaje de consultas Lucene y Kibana
- Aprendizaje automático ElasticSearch
- Cómo instalar Elastic Enterprise Search
- Cómo utilizar Elastic Enterprise Search con GitHub
Estas publicaciones son mías y no representan necesariamente la posición, estrategias u opinión de BMC.