Hive error: The string “–” is not permitted within comments

Error on Hive when try start the service.

Apache Hive, es una infraestructura de almacenamiento de datos construida sobre Apache Hadoop, para proporcionar la agrupación, consulta, y análisis de datos.

Podriamos decir que es el warehouse de Apache Hadoop.

Luego de hacer la configuracion posterior al despligue de Apache HIVE,  decido loguearme en el jutar el comando hive econtrandome con el siguiente error.

hadoop@srvhadoopt2:/opt/hadoop/hive$ hive
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/hadoop/apache-hive-2.1.1-bin/lib/log4j-slf4j-impl-2.4.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/var/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
[Fatal Error] hive-site.xml:502:85: The string "--" is not permitted within comments.
Exception in thread "main" java.lang.RuntimeException: org.xml.sax.SAXParseException; systemId: file:/opt/hadoop/apache-hive-2.1.1-bin/conf/hive-site.xml; lineNumber: 502; columnNumber: 85; The string "--" is not permitted within comments.
        at org.apache.hadoop.conf.Configuration.loadResource(Configuration.java:2696)
        at org.apache.hadoop.conf.Configuration.loadResources(Configuration.java:2553)
        at org.apache.hadoop.conf.Configuration.getProps(Configuration.java:2426)
        at org.apache.hadoop.conf.Configuration.get(Configuration.java:1240)
        at org.apache.hadoop.hive.conf.HiveConf.getVar(HiveConf.java:3558)
        at org.apache.hadoop.hive.conf.HiveConf.getVar(HiveConf.java:3622)
        at org.apache.hadoop.hive.conf.HiveConf.initialize(HiveConf.java:3709)
        at org.apache.hadoop.hive.conf.HiveConf.(HiveConf.java:3652)
        at org.apache.hadoop.hive.common.LogUtils.initHiveLog4jCommon(LogUtils.java:82)
        at org.apache.hadoop.hive.common.LogUtils.initHiveLog4j(LogUtils.java:66)
        at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:657)
        at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:641)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.hadoop.util.RunJar.run(RunJar.java:234)
        at org.apache.hadoop.util.RunJar.main(RunJar.java:148)
Caused by: org.xml.sax.SAXParseException; systemId: file:/opt/hadoop/apache-hive-2.1.1-bin/conf/hive-site.xml; lineNumber: 502; columnNumber: 85; The string "--" is not permitted within comments.
        at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
        at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
        at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:150)
        at org.apache.hadoop.conf.Configuration.parse(Configuration.java:2531)
        at org.apache.hadoop.conf.Configuration.parse(Configuration.java:2519)
        at org.apache.hadoop.conf.Configuration.loadResource(Configuration.java:2587)
        ... 17 more

Analizando el problema

Me posiciono el e $HOME que designe

Dataflow | How to Install and configure NIFI

Que es y para que ?

Nifi es una herramienta web que podemos utilizar para realizar la ingesta de datos.

Nos permite escuchar, formatear y hacer un primer filtro de los mensajes (datos) recibidos mediante varios de sus procesadores embebidos.

Asi mismo procesar y distribuir datos.

Descarga de Packages y chequeos

Descargamos los packages desde :

https://nifi.apache.org/

Alli enconraremos diferenetes versiones de producto.

Luego procedemos a realizar un CHECKSUM para poder verificar que es un package seguro y que no sufrio alteraciones en el camino.

[amercado.nbfor101200] ➤ md5sum nifi-1.4.0-bin.tar.gz
28c5511073452cf59e9ec1b278a1a7e4 nifi-1.4.0-bin.tar.gz

Instalacion

Descomprimimos el package en el path

How to Install Kibana with Debian Packages

Luego de haber realizado mi instalación de Elastic Search, decidí montar un plugin llamado  Kibana, para poder visualizar y explorar datos que se encuentran indexados en  ElasticSearch.

Podemos decir también , que como en el pasado con otros productos open source aparecieron siglas como LAMP (Linux/Apache/MySQL/PHP) para esta familia de elastic, contenemos el stack ELK:

  • Elasticsearch
  • Logstash
  • Kibana

En mi caso, decidi comenzar la instalación de forma manual , con pkgs de Debian en mi Ubuntu server 16.

Descargamos los paquetes del repositorio oficial:

hadoop@srvhadoopt3:$ wget https://artifacts.elastic.co/downloads/kibana/kibana-5.6.3-amd64.deb
--2017-10-12 16:59:33--  https://artifacts.elastic.co/downloads/kibana/kibana-5.6.3-amd64.deb
Resolving proxgue.garba.com.ar (proxgue.garba.com.ar)... 10.0.60.3
Connecting to proxgue.garba.com.ar (proxgue.garba.com.ar)|10.0.60.3|:8080... connected.
Proxy request sent, awaiting response... 200 OK
Length: 52533368 (50M) [application/octet-stream]
Saving to: ‘kibana-5.6.3-amd64.deb’

kibana-5.6.3-amd64.deb                          100%[====================================================================================================>]  50.10M  1.34MB/s    in 65s

2017-10-12 17:00:40 (784 KB/s) - ‘kibana-5.6.3-amd64.deb’ saved [52533368/52533368]

Verifico que el paquete sea seguro y que contiene el hash correspondiente

hadoop@srvhadoopt3:$ sha1sum kibana-5.6.3-amd64.deb
12821507ace7c49eea5011e360f8353007f0ab90  kibana-5.6.3-amd64.deb

Bien, una vez descargado , procedemos con la instalacion del package:

Failed to resolve config path [“/usr/share/elasticsearch/config/elasticsearch.yml”]

Al finalizar la instalación de elasticsearch decidí instalar los plugins:

  • mobz/elasticsearch-head
  • royrusso/elasticsearch-HQ

Pero por alguna razon, el comando no se ejecutaba correctamente y me arrojaba el siguiente error:

root@srvhadoopt3:~# /usr/share/elasticsearch/bin/plugin install -DproxyPort=8080 -DproxyHost=proxgue.garba.com.ar royrusso/elasticsearch-HQ
Error: Could not find or load main class "-DproxyPort=8080"
root@srvhadoopt3:~# /usr/share/elasticsearch/bin/plugin install DproxyPort=8080 DproxyHost=proxgue.garba.com.ar royrusso/elasticsearch-HQ
Exception in thread "main" org.elasticsearch.env.FailedToResolveConfigException: Failed to resolve config path ["/usr/share/elasticsearch/config/elasticsearch.yml"], tried file path ["/usr/share/elasticsearch/config/elasticsearch.yml"], path file ["/usr/share/elasticsearch/config"/"/usr/share/elasticsearch/config/elasticsearch.yml"], and classpath
at org.elasticsearch.env.Environment.resolveConfig(Environment.java:291)
at org.elasticsearch.node.internal.InternalSettingsPreparer.prepareSettings(InternalSettingsPreparer.java:95)
at org.elasticsearch.plugins.PluginManager.main(PluginManager.java:396)

Análisis

Investigando y analizando la salida de la ejecución del comando, con bash -x por delante, mas los concejos de gente de la comunidad, decidimos cambiar en el script el comando exec y reemplazarlo con el comando echo.

Ese cambio,  me retorno la sentencia para ser ejecutada.

Resolución

Editamos el archivo de configuración /usr/share/elasticsearch/bin/plugin, y vamos al

Hive failed to create /user/hive/warehouse

Como parte de la arquitectura que decidí implementar en un proyecto de bigdata en un cliente, se comenzó a instalar hive, para poder poblarla de tablas de datos pesados. Tablas de 50G a 200G en una primera etapa.

Me encontraba realizando la configuración de derby integrado con Hive y al momento de configurar la instalación de hive, y crear los directorios me arroja el siguiente error.

mkdir: `/var/hadoop/USERS/user/hive/warehouse/': No such file or directory

La secuencia ocurrió cuando estaba creando los directories de Hive con HDFS

hadoop@srvhadoopt2:$ hadoop fs -mkdir /tmp
hadoop@srvhadoopt2:$ hadoop fs -mkdir /var/hadoop/USERS/user/hive/warehouse/
mkdir: `/var/hadoop/USERS/user/hive/warehouse/': No such file or directory

Troubleshotting

El error me aparecia por que es la version de hadoop que estaba utilizando, necesitaba usar el wildcar -p , como cuando ejecuto un mkdir -p para paths anidados.

hadoop@srvhadoopt2:$ hadoop fs -mkdir -p /opt/hadoop/user/hive/warehouse
hadoop@srvhadoopt2:$

Espero les sea de ayuda!

Have a nice weekend !

RED HAT FORUM Buenos Aires 2017

RHFBA-17-00(2)
Soluciones Opensource con Red Hat

Bajo la  consigna The Impact of the Individual se realizo una nueva edición del RED HAT FORUM Buenos Aires 2017 y allí estuvimos presentes.

La cita se produjo en Hotel Hilton Buenos Aires y  los temas que se expusieron fueron:

  • El impacto del Individuo.
  • Conocer los desafíos del mercado con un enfoque abierto.
  • TI en un mundo híbrido: como innovar en su negocio con Red Hat.
  • Creando talento para la cultura digital.
  • IBM Cognitive Systems.
  • Viviendo la Transformación Digital.
  • Porque el impacto de la cultura open source todavía esta por venir.
  • Potenciando la innovación a través del desarrollo de aplicaciones de la Nube.
  • El cliente en el centro de escena: the Red Hat way.
  • Respirando la cultura Red Hat: un día en la vida de soporte técnico.

Analyzing SQL with SQL Tuning Advisor on Cloud Control 12c

Buenas Tardes Amigos, esta semana estuvimos realizando tareas de peformance en algunos customers puntuales.

Me sentí alegre, al poder recordar varias buenas practicas de Oracle con las cuales ya venimos operando con los consultores que están en mi equipo.

Problemática

  • Nos encontramos con aplicaciones que esta semana introdujeron un ciclo de cambios en producción mediante diferentes deploys.
  • Algunos querys pasaron de tiempos medidos en , mili segundos, segundos a minutos.
  • algunas aplicaciones dejaron de responder a tareas puntuales por medio time out.

Plan de acción

Como plan de acción (que ampliare en varios artículos de esta semana) decidimos hacer unas serie de tareas de monitoreo y con ello, proponer mejoras.

En el articulo de hoy, utilizaremos la herramienta Cloud Control, pero también comenzaremos a realizar las tareas por linea de comandos con el uso de los scripts sqltrpt.sql que nos servirá en caso de estar en un Customer , en donde no tengamos acceso a dicha herramienta o no esta instalado.

Cloud Control

En Cloud control , con el nombre de nuestra instancia de base de datos que fue seleccionada para ser analizada, usamos el siguiente proceso:

Performance >> Top Activity

En el browser podemos observar un escenario parecido a este: