Sunday, April 13, 2014

Hadoop zookeeper connections CDH4

I'm currently running two hadoop clusters  (Cloudera CDH4) and both suffer from the same problem, stale zookeeper connections that choke it to death.
After digging around, I've located two culprits. One is the thrift hive server we run manually for Tableau connection and the other is Hue.
To make a long story short, here's my solution:

#!/bin/bash
# Function check thrift process id
check_pid() {
        pid=`cat ~/thrift.pid`
    #echo $pid
    ps -A|grep $pid|grep java > /dev/null 2>&1
        result=$?
}


# Function restart Hue service
restart_hue() {
    curl -X POST -u 'admin:admin' http://localhost:7180/api/v2/clusters/TEST%20-%20CDH4/services/hue1/commands/restart  >/dev/null 2>&1
}


# Function kill thrift server
kill_thrift() {
        kill $pid
        sleep 2
        check_pid
        if [ "$result" == 0 ]; then {
                kill -9 $pid
                sleep 2
        }
        fi
    check_pid
    if [ "$result" == 0 ]; then {
        echo "Error: Failed to kill server"
        exit 1
        }
    fi
}


# Sanity
if [ ! -f ~/thrift.pid ]; then {
    echo "Error: thrift process id file ~/thrift.pid not found."
    exit 1
}
fi


if [ `whoami` != "admin" ]; then {
    echo "Error: you are not logged in or executing as user admin, please do so."
    exit 1
}
fi


# Main
restart_hue
result=$?
if [ "$result" -gt 0 ]; then {
        echo Error restarting Hue service, please check cluster integrity.
        exit 1
}
fi
zookeeper_connections=`echo srvr|nc localhost 2181|grep -i connections`
result=$?
if [ "$result" -gt 0 ]; then {
    echo Error: no reply from Zookeeper.
    exit 1
}
fi
zookeeper_connections=${zookeeper_connections##*: }
#echo $zookeeper_connections
if [ $zookeeper_connections -gt 100 ]; then {
    echo "Zookeeper has $zookeeper_connections open conenctions."
    check_pid
    if [ "$result" -gt 0 ]; then {
        echo "Error: can not find thrift server PID"
        exit 1
    }
    fi   
    echo "Found Thrift server, restarting"
    kill_thrift
    export HIVE_PORT=10001
    hive --service hiveserver &
    pid=$!
    echo $pid> ~/thrift.pid
    return=$?
}
else {
    echo "Zookeeper has $zookeeper_connections open conenctions."
}
fi
exit $return
This script is executed every morning via crontab to keep zookeeper from choking. It's been running happily for a few months now :)

Emailing from Bash CLI or script on ubuntu

Basically what you might be looking for is a command line or shell script email sender that knows how to work with gmail. If you are, search no more!

$ sudo apt-get install msmtp openssl ca-certificates
$ vim ~/.msmtprc
account default
host smtp.gmail.com
port 587
from GMAIL_ACCOUNT
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
auth on
user GMAIL_ACCOUNT
password GMAIL_PASSWORD
logfile ~/.msmtp
$ chmod 600  ~/.msmtp

Prepare a file starting wit:
to: DESTINATION
from: SENDER
subject: SUBJECT

And finally:
msmtp -t < YOUR_FILE

Tuesday, April 8, 2014

Forcing Wacom Intous to work with a single monitor on dual monitor setup

So your Wacom Intous refuses to stay locked with a single monitor in your dual + monitor setup no matter what you tell it? There's a quick fix, in the Wacom driver properties, use manual resolution!
For example, to lock it to your left most screen on a FullHD setup put: 0x0 - 1919x1079 and voilĂ !

How to determine mysql table storage engine

So you're trying to find out which storage engine is being used by tables in your mysql database? Thank to Ronald Bradford's blog entry, the best answer I found is this:
mysql> use database_name;
mysql> SELECT table_name,engine FROM INFORMATION_SCHEMA.TABLES WHERE table_schema=DATABASE();

Monday, February 24, 2014

Switching keyboard layout on Ubuntu 13.10

Found this after digging around in AskUbuntu:
It's still possible to make the change from the command line using dpkg. Credit goes to this site: http://www.humans-enabled.com/2013/10/ubuntu-1310-enable-controlaltbackspace.html. To sum up what's written there, you can open a terminal and enter

$ sudo dpkg-reconfigure keyboard-configuration

This will take you through a series of options for the keyboard; for the first 4 or 5 just hit enter to keep things as is, and you'll end up with the option to enable Ctrl-Alt-Backspace.