Instalación Apache Accumulo (Pseudo Distribuido)

Una vez que tenemos la teoría lista procederemos a instalar este componente de Apache, que será nuestra primera Base NoSQL, para esto necesitamos descargar el binario que como siempre se puede descargar del siguiente link: https://www.apache.org/dyn/closer.lua/accumulo/1.8.1/accumulo-1.8.1-bin.tar.gz como se muestra en la siguiente imagen.



Una vez descargado el binario y lo podemos ver en nuestra máquina como en la imagen siguiente.



Se procederá a descomprimirlo y a mover la carpeta a la localización de /usr/local/accumulo (Como estos ya son post muy adelantados omitiré ciertos comandos que hemos usado a lo largo del post y los daré por obvios)


Una vez que se encuentra en la carpeta procedemos a configurar la instancia de Apache Accumulo que sera de forma pseudo distribuida, para eso comenzamos en caso de intentar hacer una instalación distribuida deberán realizarse estos pasos en todas las máquinas de nuestro clúster.

Antes de realizar los siguientes pasos debo aclarar unas cosas y es que para instalar la última versión de Apache Accumulo necesitaremos los siguientes pre requisitos:

  1. Apache Hadoop 2.7.x
  2. Apache Zookeeper 3.4.x
Hasta este punto las personas que siguen mi Blog la distribución que hemos creado hasta este momento no nos es útil para levantar una instancia de Apache Accumulo,  ya que levantamos una instancia de Apache Hadoop con la versión 2.8.x la cuál no es compatible con la última versión de Apache Accumulo y eso nos podría traer problemas a la hora de Instalarlo y serán grandes dolores de cabeza, entonces si tú me sigues en mi Blog desde el principio deberá realizarse de nuevo una instalación de Apache Hadoop pero con alguna versión del tipo 2.7.x para que se cree sin ningún problema  y basta con seguir el post de instalación de Apache Hadoop de este Blog pero con la versión 2.7.x, la versión de Zookeeper es la correcta ya que se utilizo esa en el post de Zookeeper y en caso de no seguir este blog deberá conseguirse de algún lado una instancia con los requisitos anteriores.

Una vez mencionado los requisitos necesarios para que Accumulo pueda instalarse procedemos a verificar que los servicios de Hadoop y el Zookeeper se encuentra arriba.


El que los servicios estén arriba implica que en nuestro Sistema Operativo tenemos dado de alta las siguientes variables de ambiente ZOOKEEPER_HOME, HADOOP_HOME y ACCUMULO_HOME, que son necesarias para que Accumulo encuentre todas las librerías necesarias para su funcionamiento, en caso de no contar con ellas podemos darlas de alta con el siguiente valor.

No mostraré como hacerlo por que esto se describió en el post de levantamiento de Apache Hadoop, así que solo mostraré el valor de las variables antes mencionadas.

Native Code

Apache Accumulo tiene código nativo que sirve para mejor la estabilidad y el desempeño de este componente en el sistema operativo instalado y para intentar instalar este código nativo antes de realizar cualquier otra cosa, ejecutaremos el siguiente comando.

Nos dirigimos a la carpeta /usr/local/accumulo/bin/ y en esta carpeta hay un script llamado build_native_library.sh el cuál ejecutaremos y lucirá como en la siguiente imagen.


En dado caso que el comando anterior llegase a fallar, no importa podemos continuar sin instalarlo y checar el problema después o simplemente no instalarlo, ya que simplemente solo es código para la mejora de nuestra instancia de Accumulo.

Configuración

Accumulo al igual que nuestros anteriores componentes cuenta con una carpeta de configuración la cuál debe llenarse con los archivos necesarios para el levantamiento de la instancia, llenaremos este directorio con un script que nos provee Apache Accumulo que se encuentra en bin con el nombre de bootstap_config.sh el cuál con un menú interactivo como se muestra a continuación.
Cómo se puede ver en la imagen anterior  en el paso 2 escogí el tipo de memory-map de Accumulo la opción de Native, ya que el primer paso fue instalar las librerías nativas para un mejor desempeño de nuestra instancia de Accumulo, pero esto desencadena varias acciones más que aún no se tocan en este Blog y una de ellas es que aunque ya sabemos instalar hadoop, sabemos levantar una instancia con los binarios ya compilados que la Fundación Apache nos proveen y en la mayoría de los casos no son bajo las librerías nativas de cada distribución de linux, por lo cuál lo mejor es descargar el source y compilarlo en nuestro sistema operativo donde instalaremos el clúster, y como cuando se desea instalar de forma nativa Accumulo nos pregunta por las librerías de Hadoop las cuales aún no sabemos como generarlas, por lo que generaré una Instancia de Accumulo sin librerías Nativas y con Java como la opción a la pregunta 2, cabe mencionar que trabajar con librerías nativas solo reduce algunos errores los cuales son mínimos a la hora de trabajar con este tipo de Software.
Entonces la siguiente configuración quedaría de la siguiente manera como se muestra en la siguiente imagen:



Cabe mencionar que la pregunta 3 nos muestra varias distribuciones de Hadoop, aunque todas funcionan bajo el mismo concepto son versiones diferentes de Hadoop o de el proveedor, nosotros elegimos la opción 2 ya que esa representa una distribución levantada de manera custom como nosotros lo hemos hecho a lo largo del Blog.

Esto deberá realizarse en todas las máquinas en caso de que se este realizando una instalación distribuida.

Una vez que se termina de ejecutar el script nos creará automáticamente los archivos de configuración en la carpeta conf/ correspondiente a Apache Accumulo como se puede ver en la siguiente imagen.


Secret

Los procesos de coordinación y los worker solo se pueden comunicar entre ellos si comparten la misma llave, la cuál esta con el valor de DEFAULT del paso anterior, el cuál podemos encontrar en el archivo accumulo-site.xml que se encuentra en conf/ de los directorios de Accumulo y que tiene como llame la siguiente cadena instance.secret

Cómo podemos ver tiene el valor de DEFAULT en caso que se quiera aumentar la seguridad es recomendable cambiarle ese valor.

Dependencias

Accumulo necesita que este corriendo Zookeeper y HDFS para la elección de sus lideres de Accumulo y para el almacenamiento de sus Tablets y su write-ahead log.

Accumulo no provee estos componentes, pero eso no es ningún problema hasta esta parte del Blog por que nosotros ya hemos trabajado con estas herramientas, así que procedemos a verificar la configuración de estos componentes en nuestro archivo accumulo-site.xml de la instancia de accumulo en nuestra máquina.


En el recuadro naranja se encuentra la propiedad que nos sirve para indicarle  nuestra instancia de Accumulo en que parte de HDFS y a que Host y puerto debe apuntar para encontrar nuestro HDFS en la imagen anterior esta vacía su valor por lo que procederé a llenarlo y en el recuadro rojo se puede encontrar la propiedad que apunta al Zookeeper y en que Host y puerto se levanta.


Como podemos ver en los recuadros verdes se encuentran los valores de las propiedades de HDFS y de Zookeeper, como sabrán yo configure hadoop en este blog con el hostname de cluster y en el puerto 9000, y zookeeper se levanto por default en el localhost puerto 2181 en caso de dejar en blanco el valor de la propiedad instance.volumes la carpeta se creará en raíz de manera lógica en nuestro Web Browser de HDFS como se muestra acontinuación.



Y dentro de esta carpeta se encuentra toda la estructura de nuestra instancia de Accumulo.


Modo Distribuido

En caso de que quieran hacer la forma distribuida los pasos anteriores deberán realizarse en todos sus nodos, más aparte las siguientes configuraciones:
  • conf/masters: El proceso de coordinación principal corresponde a los maestros ya que de el depende que el servicio responda, en este archivo pueden agregarse más hostname o en su caso FQDN los cuáles estarán como respaldo en caso de que el maestro principal caiga para cubrir la tolerancia a fallos (high availability). 
  • conf/gc: Este archivo sirve para configurar el garbage collector al igual que en el archivo anterior correspondiente a los maestros debe especificarse al menos un nodo ó en caso de querer proporcionar High Availability deberá incluirse más de un hostname o FQDN.
  • conf/monitor: Este archivo pertenece al monitor de Apache Accumulo el cuál deberá llenarse con el hostname o FQDN de la máquina donde el monitoreo del Web Server esta corriendo.
  • conf/slaves: Es el proceso de Accumulo para los workers. En este archivo se deberán de agregar todos los hostnames o FQDNs donde los TabletServers serán ejecutados y estarán trabajando en palabras más burdas son los esclavos.
  • conf/tracers: Esta es una capa opcional, la cuál puede configurar o no y como es opcional puede poner 0 máquinas ó más a este archivo de configuración.
No describo para que sirve estos archivos ya que en el post anterior de teoría explique para que servia cada una de las capas listadas anteriormente.

Inicialización

Accumulo necesita iniciar donde la información correspondiente a sus procesos debe inicializarse, tanto para HDFS como para Zookeeper, el siguiente comando se encarga de realizar lo anterior dicho.

./bin/accumulo init

El comando anterior te pedirá los siguientes datos.

  • Nombre de la Instancia: Este es el nombre de la Instancia de Accumulo y será necesaria para que los clientes de Accumulo puedan conectarse a ella.
  • Contraseña del Root: Al momento de inicialización de nuestra instancia Accumulo crea un usuario llamado root y entonces nos pregunta por la contraseña de este usuario, que será necesaria al igual que el nombre de la instancia para poder conectarnos a ella en forma de cliente.


Como podemos ver después de ejecutar el comando anterior la consola preguntará por el nombre de la instancia que en mi caso la nombre accumulo y por la contraseña de mi instancia.

Levantar los Servicios

Una vez que inicializamos nuestra instancia el siguiente paso sería levantar los servicios para que podamos hacer uso de nuestra  instancia el cual logramos con el siguiente comando.

./bin/start-all.sh
El cual se encargará de levantar los servicios de Accumulo que como ya hemos visto son:
  • Maestro
  • ServerTablet
  • Monitor
  • GarbageCollector   
Y en dado caso de levantar un Tracer tendremos este servicio activo también, en esta instancia nosotros no levantamos ningún Tracer, así que solo levantará 4 servicios, la traza del comando anterior es el siguiente.

Una vez que libera el prompt los servicios deberían estar activos y procedemos a verificar eso.

Como podemos ver ahora encontramos 4 procesos llamados Main los cuales corresponden a los servicios de Apache Accumulo que mencionamos anteriormente con esto nuestra instancia esta lista para ser utilizada.

Como el archivo que se encuentra en conf/monitor lo dejamos por default entonces la interface web se levantara en localhost en el puerto 9995 el cuál luce de la siguiente manera.


Conclusiones

Como podemos ver la mayoría de los componentes extras necesitan de Hadoop y es que es el Corazón de todo proceso distribuido de la Fundación Apache, ahora tenemos nuestra primer Base NoSQL lista para ser utilizada, también cabe mencionar que esta Base es del Tipo CP y aunque esta es una instancia pseudodistribuda puedo asegurar con mucha certeza que si se le cargase millones de registros sería mucho más rápido la Búsqueda en una Instancia de Accumulo que en alguna RDBMS ya que son diseñadas para eso.

Aunque también cabe mencionar que cuando termine todo este Blog me dedicaré a explicar en mis últimos posts el levantamiento de clústers distribuidos de todos los componentes que veamos a lo largo de este tiempo, ahorita solo manejo instancias pseudo distribuidas ya que funcionan de la misma manera que las distribuidas y son mucho más rápidas de instalar y explicar y lo que hagamos con este tipos de instancias se podrá hacer de la misma manera en una instancia distribuida.

Comentarios

Entradas más populares de este blog

Replicación y Formas de Paralelización Apache Hadoop

Manejo Apache Hive

Asignación de un líder Zookeeper