Desactivar el safemode del Name Node en Hadoop

Hola Mundo:

Una vez que el cluster se inicia, automáticamente el Name Node entra en este Safe Mode hasta que logra configurar un mínimo de bloques requeridos para realizar la replicación.  Una vez que  logra el mínimo requerido, sale del modo seguro.

El modo seguro, o safe mode, no acepta cambios en el sistema de archivos ni tampoco replica o elimina bloques.

Esto no es problema, si es algo automático y normal del cluster, pero ¿qué hacer cuando el sistema no sale del modo seguro?  Me pasó hoy.

Hubo una falla en el centro de datos y el cluster se fue al suelo y me di cuenta, porque al intentar borrar unos archivos del sistema de archivos me dio el siguiente mensaje:

rm: Cannot delete /user/root/terasort-input. Name node is in safe mode.

Para desactivarlo, tuve que seguir la siguiente secuencia de órdenes:

# su -l hdfs
# hdfs dfsadmin -safemode leave

Les aparecerá en pantalla algo así como:

Safe Mode is off

Con eso ya queda listo.

Ojo que deben ejecutar la sentencia con el usuario hdfs, porque lo más probable es que les diga que el usuario root no tiene privilegios (Por lo menos, a mi me sucedio con Cloudera).

Chau!

Habilitar PHP para Apache en Red Hat Enterprise Linux

Linux Linux Linux Linux Linux Linux Linux Linux Linux Linux Linux Linux  …. Como en lo viejos tiempos jeje.

Pareciera como si fuera ayer las horas invertidas aprendiendo sobre la consola y la infinidades que se pueden lograr. Lo bueno, es que ahora en mi empleo actual tienen mucho fruto.

Hoy me tocó habilitar un servidor web sencillo para un cliente. Se necesitaba de Apache2 con soporte para PHP sobre un Red Hat Enterprise Linux.

Primero instalé lo necesario:

yum install httpd php

Después habilité el soporte para php desde /etc/httpd/httpd.conf  agregando esta línea en el archivo:

AddType application/x-httpd-php .php

Al final reinicé el servicio

service httpd restart

Para hacer una pruebita loca, cree un archivo llamado prueba.php en /var/www/html/
y el contenido del archivo es:

Y en el navegador se debe ver así:

phpinfo

 

En otras distros es mas simple 🙂

 

Enviar correos desde PHP sobre Ubuntu

Hola Mundo:

Por fin puedo publicar algo por acá. Estaba muy ocupado por temas de estudios y trabajo, lo cual es muy bueno.

Hoy les escribiré sobre algo bastante recurrente en las instalaciones caseras de LAMP (Linux, Apache, MySQL y PHP) y es algo que es simple de solucionar, cuando se cuenta con algunas herramientas.

El problema está en que cuando se hace una instalación de este estilo, PHP no es capaz de enviar mails a través de la funcion mail() y el log de errores queda completo con errores por esta función. El síntoma es claro: PHP no envía mails.

Esto ocurre cuando un servidor smtp (Simple Mail Transfer Protocol) no se encuenta instalado y/o la ruta no se encuentra definida en el archivo php.ini (Por lo menos la ruta de php.ini en Ubuntu Server es /etc/php5/apache2/php.ini)

Para instalar sendmail en Debian y derivados:

apt-get install sendmail

Una vez que está instalado, abrir el archivo php.ini y buscar la linea

;sendmail_path =

y cambiarla por

sendmail_path = /usr/sbin/sendmail -t -i

Luego reiniciar el servicio de apache2 y funcionará.

Saludos!

 

Error: MainThread agent ERROR Could not determine hostname or ip address

Hola Mundo:

Cloudera Manager nos facilita el trabajo en un cluster de Hadoop. Esto es un hecho, pero la instalación puede complicar un poco las cosas.

Partamos de la base que Cloudera Manager es como una interfaz de administración que se instala sobre el nodo principal del cluster y sirve para administrar los trabajos y el resto de los nodos que forman parte del cluster. ¿Ok?

Ofrece una interfaz web para la administración y para la instalación. Lo bueno de la instalación, es que se le indican las máquinas que formarán parte del cluster para que puedan ser administradas y solo el programa de instalación se encarga de hacer el deployment. La instalación es muy sencilla y fluida siempre y cuando no se encuentre un error como este:

MainThread agent ERROR Could not determine hostname or ip address

El error está porque no puede asociar la dirección ip al hostname. Esto puede ser por un DNS mal configurado o, derechamente, por la inexistencia de un DNS.
Este error es fácil de solucionar. En cada nodo hacer los siguientes pasos:

  • Editar archivo /etc/hosts y agregar la ip y el nombre de la maquina
  • Editar el archivo /etc/cloudera-scm-agent/config.ini y en server_host poner el nombre de la maquina

Si no se conoce el nombre de la máquina, ejecutar la sentencia hostname y arrojará el nombre

Con esto ya se puede seguir con la instalación de Cloudera Manager.

¡Chau!

Desactivar Firewall en Red Hat Enterprise Linux

Hola Mundo:

Hoy en el trabajo me tocó desactivar el firewall para poder hacer unas pruebas en el laboratorio y de seguro ustedes necesitarán hacerlo alguna vez.

Cada distro de Linux tiene su forma especial para llevar a cabo tareas de administración y Red Hat Enterprise Linux no se queda atrás (Fedora y CentOS tambien heredan estos métodos) y cuenta con unos asistentes que facilitan la tarea.

Estos asistentes existen tanto para la consola como para el entorno gráfico. En estos momentos yo no tengo interfaz gráfica en mi laboratorio  y solo tengo acceso por ssh.

Para desactivar el firewall, con permisos de root, ejecuté la siguiente sentencia:

system-config-firewall-tui

y mostró una pantalla así:

Pantalla de system-config-firewall-tui
Pantalla de system-config-firewall-tui

Ahí muestra que el firewall está activado. Deseleccioné el elemento y queda así:

Firewall Disabled
Firewall Disabled

Luego nos movemos a OK y apretamos la tecla de enter y los cambios quedarán hechos.

¿Facil, no?

Chau!

Hamachi en Trixbox

Hola gente! Hoy debo alegar algo: La documentación en español apesta. Es imposible encontrar algo sin antes leer algo en ingles. Afortunadamente estoy tomando clases de ingles y tengo facilidades para el tema.

Pero ese no es el punto. Hoy les vengo a hablar de una maravilla llamada Hamachi + Trixbox. Espero que todos sepan lo que es Trixbox, si no lo sabe, espere a las proximas entregas. Ahi hablare que es.

Para suerte de muchos, Trixbox desciende de CentOS y, por lo tanto, hace uno de yum para la gestión de sus paquetes. Instalar hamachi en trixbox es re sencillo.

  1. Entrar como root
  2. Ejecutar: yum install hamachi
  3. Ejecutar: setup-hamachi. Al ejecutar esta orden, se mostrara un asistente bien a lo unix-style, en el cual nos solicitara alguna informacion como: Network to join (la red a la que quieres unirte)Network Password(Password de la red a la que quieres unirte) y Machine Nickname(El nombre que tendrá la maquina).
  4. Para que hamachi pueda iniciarse como servicio cada vez que el equipo se enciende, hay que escribir las siguientes lineas en un archivo llamado hamachi que se debe crear /etc/init.d/

    #!/bin/bash
    ############################################
    ### This is a startup script for hamachi ###
    ############################################
    USER=root
    case «$1» in
    start)
    /sbin/tuncfg
    /bin/su – $USER -c «hamachi start»
    ;;
    stop)
    /bin/su – $USER -c «hamachi stop»
    ;;
    restart|force-reload)
    /bin/su – $USER -c «hamachi start»
    /bin/su – $USER -c «hamachi stop»
    ;;
    *)
    exit 1
    ;;
    esac

    exit 0

  5. Una vez que esta listo (guardado y cerrado) se le da permisos de ejecucion chmod a+x hamachi.
  6. Despues crear los siguientes enlaces simbolicos: ln -s /etc/init.d/hamachi /etc/rc3.d/S99hamachi y
    ln -s /etc/init.d/hamachi /etc/rc3.d/K99hamachi

Con esto tenemos listo nuestro hamachi con trixbox. A gozar de la telefonia ip casera!

Este post fue creado en base a este link https://sites.google.com/site/josephades1/gen_hamachi

Hosts Virtuales en IIS 7.5 y Apache 2

En estricto rigor, cada servidor web debe alojar a un sitio web. Solo basta con imaginar la cantidad de sitios web que existen y la cantidad de maquinas funcionando para levantar cada sitio web (Menos mal existe la virtualizacion, pero aun asi el gasto de recursos sera gigante), para darse cuenta que esta medida es sumamente ineficiente.

Por obra y gracia de los desarrolladores, existe lo que son los hosts virtuales. Estos sirven para almacenar mas de un sitio web, utilizando una sola dirección IP y haciéndole creer al sitio web que esta sobre un servidor web aislado.

Apache 2.0

Apache2 es el servidor web sobre *Nix por excelencia y fue uno de los pioneros en implementar el modulo de virtual hosts. A pesar que su implementacion es a traves de manejos de archivos de texto, es relativamente sencillo. Solo tenemos que manejar los siguientes parametros:

  • ServerName Nombre del Servidor. Es aquí donde se indica el nombre de dominio
  • DocumentRoot Ubicación de los archivos del sitio web.
  • ServerAdmin Correo del administrador del Virtual Host
  • ErrorLog Lugar donde se almacenan los registros de error
  • CustomLog Lugar donde se almacenan los registros de acceso
  • ServerSignature Activar o desactivar la firma del servidor

Estos son los parametros basicos que se pueden configurar. Existen muchos mas que se pueden consultar en la documentacion oficial de Apache.

Es importante tener en cuenta que cada distribución de Linux tiene su forma especial de trabajar la configuracion de Apache. Todo dependera de como se vaya componiendo el archivo de configuracion httpd.conf. Por ejemplo, en Red Hat Enterprise Linux 5 esta todo concentrado en un solo archivo: httpd.conf. En cambio, en Debian la configuración se divide en el directorio de Apache2 en sites-available, sites-enabled, mods-available, mods-enabled, entre otros.

Obviamente, cada configuración tiene sus pros y contras, pero todo funciona a gusto del consumidor. Pero para tranquilidad de ustedes, estimados lectores y colegas, haré un ejemplo sobre Debian y otro sobre Centos.

Se asume que en ambas distribuciones de linux ya se encuentra instalado el servicio

Apache2 sobre Debian

El escenario es el siguiente: Tengo una maquina con Debian 5, servidor grafico corriendo, fluxbox como gestor de ventanas y xterm como emulador de terminal. Un screenshot para aclarar la pelicula:

Para que el ejemplo sea un poco mas real, agregaremos las siguientes lineas al archivo /etc/hosts

127.0.0.1 www.estoesunejemplo.com

127.0.0.1 www.estoesotroejemplo.com

Y reiniciamos el servicio de redes: /etc/init.d/networking y hacemos una prueba de conectvidad a ambos dominios. Tiene que aparecernos algo asi:

Todo bien? Perfecto, entonces sigamos.  Vamos a crear el primer virtual host «www.estoesunejemplo.com». Para esto, crearemos un archivo llamado www.estoesunejemplo.com dentro de /etc/apache2/sites-available y a modo de prueba, anotaremos lo siguiente:

<VirtualHost *:80>
ServerAdmin admin@estoesunejemplo.com
ServerName www.estoesunejemplo.com
ServerAlias estoesunejemplo.com
ServerSignature On
DocumentRoot /home/estoesunejemolo/www/
</VirtualHost *:80>

Y luego creamos otro archivo de texto llamado www.estoesotroejemplo.com y agregamos las siguientes lineas:

<VirtualHost *:80>
ServerAdmin admin@estoesotroejemplo.com
ServerName www.estoesotroejemplo.com
ServerAlias estoesotroejemplo.com
ServerSignature On
DocumentRoot /home/estoesotroejemplo/www/
</VirtualHost *:80>

Ups! Nos falto realizar un paso. Tenemos que agregar los usuarios estoesunejemplo y estoesotroejemplo y en ambos lados crear los directorios www. Ahora hay que habilitar ambos sitios. En la consola tienes que escribir:

a2ensite www.estoesunejemplo.com
a2ensite www.estoesotroejemplo.com

Y relodeamos el servicio de apache2

/etc/init.d/apache2 reload

Para finalizar, nos queda construir los sitios web para que puedan ser visibles.
Iremos a /home/estoesunejemplo/www y crearemos un archivo que se llame index.html y en su contenido escribimos

<h1>www.estoesunejemplo.com</h1>

Para el sitio www.estoesotroejemplo.com tenemos que hacer lo mismo, pero en su respectivo directorio y en el contenido del index.html poner

<h1>www.estoesotroejemplo.com</h1>

Y voila! Al hacer una prueba, si entramos en www.estoesunejemplo.com en algun navegador web (usare lynx) nos mostrara lo siguiente:

Y listoco. Eso seria con Debian. Vamos con Centos.

Apache2 sobre Centos

Si la implementacion en Debian es sencillo, en Centos es mas sencillo aun. El escenario es es siguiente: Una instalacion comun y corriente de Centos, sin software de escritorio adicional. Solo entorno grafico Gnome y Servidor web Apache2. No he instalado ni quitado ningun software.

Escritorio con Centos
Escritorio con Centos

Nota importante para los que instalaron el servidor web desde la instalacion del sistema: Tienen que activar el servicio al arranque con la siguiente orden:

/sbin/chkconfig httpd on

Para que este ejemplo resulte al igual que el anterior, tenemos que hacer lo siguiente:
agregar las siguientes lineas al archivo /etc/hosts

127.0.0.1 www.estoesunejemplo.com

127.0.0.1 www.estoesotroejemplo.com

Y reiniciamos el servicio de redes: service networking restart
Hacemos arrancar el demonio de apache2 y nos aseguramos que vemos la pagina por default:

Apache2 Default
Apache2 Default

Abrimos una terminal y vamos a /etc/httpd/conf/ y editamos el archivo httpd.conf con algun editor de texto. Usare gedit porque me acomoda mas. En el archivo httpd.conf tenemos que ubicar la seccion correspondiente a los Virtual Hosts. Exactamente esta ubicado al final del archivo.
El archivo de configuracion nos muestra un ejemplo sobre como podemos usar la caracteristica.
Justo debajo de la ultima linea escribiremos lo siguiente:

 

<VirtualHost *:80>
ServerAdmin admin@estoesunejemplo.com
ServerName www.estoesunejemplo.com
ServerAlias estoesunejemplo.com
ServerSignature On
DocumentRoot /var/www/www.estoesunejemplo.com/
</VirtualHost *:80>
<VirtualHost *:80>
ServerAdmin admin@estoesotroejemplo.com
ServerName www.estoesotroejemplo.com
ServerAlias estoesotroejemplo.com
ServerSignature On
DocumentRoot /var/www/www.estoesotroejemplo.com/
</VirtualHost *:80>

Guardamos, cerramos y creamos los directorios correspondientes, estoesunejemplo y estoesotroejemplo, dentro de /var/www/ . Posteriormente, en /var/www/www.estoesunejemplo.com/ creamos un fichero llamado index.html y dentro de aquel fichero escribimos lo siguiente:

<h1>www.estoesunejemplo.com</h1>

Ahora, vamos a /var/www/www.estoesotroejemplo/ creamos un fichero llamado index.html y dentro de aquel fichero escribimos lo siguiente:

<h1>www.estoesotroejemplo.com</h1>

Solo resta reiniciar el servidor de apache y probar cada virtual host. Para reiniciar el servidor, escribimos lo sigueinte: service httpd restart

Cuando me encontraba escribiendo este post, mi notebook se apagó y nunca más encendió. El equipo que estaba corriendo Windows Server 2008 R2 y en el que tenía montada las pruebas, lo estoy usando como workstation con Windows 7. Así que el ejemplo de IIS 7.5 lo haré sobre Windows 7 y terminaré de explicar el ejemplo de Centos con palabras.

Una vez que el servicio esta reiniciado, abrir una ventana del firefox y meter la direccion www.estoesunejemplo.com y veran el titulo del sitio web en grande. Si se van a www.estoesotroejemplo.com, podrán ver lo mismo, pero correspondiente a www.estoesotroejemplo.com.

IIS 7.5

El ejemplo lo pensaba hacer con Windows Server 2008 R2, pero lo haré con Windows 7. Prácticamente es lo mismo.

Para que este ejemplo pueda funcionar de igual modo que los dos ejemplos anteriores, tenemos que agregar las siguientes lineas al archivo C:WindowsSystem32driversetchosts

127.0.0.1 estoesunejemplo.com
127.0.0.1 estoesotroejemplo.com

Se asume que IIS 7.5 ya se encuentra instalado. Podemos hacer una prueba de su funcionamiento abriendo una ventana del navegador y escribiendo localhost en la barra de direcciones. Si el servicio está funcinoando, mostrará una imagen así:

IIS 7.5 en Funcionamiento
IIS 7.5 en Funcionamiento

Ahora abrimos el administrador de IIS 7.5. En Windows Server 2008 R2, se encuentra en el menú de administrar servidor y en Windows 7 se encuentra en la administración del equipo.

La administración de IIS 7.5 consta de 3 columnas: Conexiones, Aspectos de configuración y Acciones. Para crear los hosts virtuales, nos centraremos en la columna de Conexiones.

Administracion IIS 7.5
Administracion IIS 7.5

En la columna de Conexiones, hay un objeto llamado Sitios. En el objeto Sitios, hacemos click secundario y escogemos la opcion Agregar Sitio Web. Nos motrará una ventana como esta:

Agregar Sitio Web IIS 7.5
Agregar Sitio Web IIS 7.5

Y rellenaremos las cajas de texto, tal cual como aparece en la imagen:

OJO: Antes de hacer click en aceptar, hay que hacer click en el boton de Conectar Como y ahí especificamos un usuario con su respectiva password.

En Establecer escribimos el usuario y el password. En mi caso, puse mi usuario.

Hacemos click en aceptar y luego creamos el host virtual haciendo click en  aceptar.

Para crear el host para estoesotroejemplo.com se hace exactamente lo mismo, solo que se cambia el nombre y el directorio en donde se alojaran los archivos.

Ahora hay que crear un archivo llamado index.htm y le ponemos cualquier contenido y lo guardamos en C:inetpubwwwrootestoesunejemplo.com

Para probar la configuracion, abrimos una ventana del navegador y escribimos: estoesunejemplo.com

Como yo no creé nada para el sitio estoesotroejemplo.com me arrojará un error como el de la imagen:

Como pueden ver, crear hosts virtuales en Apache2 e IIS7.5 es una tarea sencilla que no toma mucho tiempo. Ahora si son hábiles con powershell y bash pueden automatizar más aún el proceso.

Espero que les haya gustado y cualquier duda, dejenla en los comentarios

(aqui se metio una toto)

Instalacion de LTSP en Ubuntu

Hola gente, como uno de los ultimos posts del anio, les traigo un manual detallado sobre la instalacion de LTSP sobre Ubuntu, usando la version Alternate Install.
Todos los pasos estan detallados, asi que no creo que tengan problemas.
En todo caso, si tienen dudas o algun comentario, sientanse libres de escribirmelso y con gusto les respondere.

Instalación de Linux Terminal Server Project bajo Ubuntu 10

Permitir conexiones remotas con MySQL

Hay veces que estamos de lo mejor procrastinando y suena el telefono  y es nuestro jefe preguntando:

«Porque #@#%#@$$%^#$%@%!#$%$ no me puedo conectar a la base de datos desde mi computador?»

Uno le explica que la base de datos, por medidas de seguridad, no acepta conexiones remotas. Ademas, le explica todo lo que conlleva dejar abierta el acceso a la base de datos y blah blah blah y el insiste en abrir el acceso y dejarlo publico.

Donde manda capitán, no manda marinero.

Abrimos una bella sesion de ssh y nos dirigimos al directorio /etc/mysql y editamos  el archivo my.cnf y buscamos la linea:

bind-address = 127.0.0.1

Y la reemplazamos por:

bind-address = 0.0.0.0

Con eso le decimos a MySQL que acepte conexiones de todos lados.

Bueno, ahora solo queda reiniciar el servicio de MySQL:

service mysql restart

Modificar el usuario que necesite acceder desde otro lugar, poniendo un signo % en la parte de servidor (se puede hacer desde phpmyadmin)

No olvidar abrir el puerto 3306 en el firewall.

Merry X-Mas