2014年3月22日土曜日

Apache Hiveを使ってみる

Apache Hiveを使ってみる。

準備:
Hiveを使用するには、JavaとHadoopのインストールが必要です。
※パス、ファイル名、ユーザは必要に応じて変更して下さい。

Hiveダウンロード

$ cd /usr/local/
$ sudo wget http://ftp.riken.jp/net/apache/hive/hive-0.12.0/hive-0.12.0-bin.tar.gz
$ sudo tar -zxvf hive-0.12.0-bin.tar.gz
$ sudo mv hive-0.12.0-bin/ hive
$ sudo chown hadoop:hadoop hive/

※必要に応じたバージョンをダウンロード(今回は.0.12.0を使用)
http://ftp.riken.jp/net/apache/hive/

Hadoopユーザに切り替え

$ su hadoop

環境変数

$HOME/.profileに下記を追加

export HIVE_HOME=/usr/local/hive
export PATH=$HIVE_HOME/bin:$PATH

Hive動作確認

テーブル作成
hive
hive> CREATE EXTERNAL TABLE sample (
    > data string
    > )
    > LOCATION '/data/sample/';
OK
Time taken: 28.416 seconds
※HDFS上の/data/sample/にデータがあることが前提

クエリの実行
hive> SELECT * FROM sample;
OK
sample
test
Time taken: 1.279 seconds, Fetched: 2 row(s)

2014年3月21日金曜日

UbuntuでXMLの整形

Ubuntu環境でXMLを整形したい場合は、xmllintを使うと簡単にできます。

$ xmllint --format xml.txt
<?xml version="1.0"?>
<tag1>
  <tag2>1</tag2>
  <tag3>"test"</tag3>
</tag1>

※ファイルに出力する場合は、「> xml2.txt」を後につける。


「xmllintがインストールされていません」とエラーが出る場合は、下記のコマンドでインストール

$ sudo apt-get install libxml2-utils

UbuntuでJSONの整形

Ubuntu環境でJSONを整形したい場合は、Pythonを使うと簡単にできます。
※最近の環境ではPythonがプリインストールされている。

$ echo '{"key1":"value","key2":2}' | python -mjson.tool
{
    "key1": "value",
    "key2": 2
}

ファイルを整形する場合は

$ cat json.txt | python -mjson.tool
{
    "key1": "value",
    "key2": 2,
    "key3": [
        3,
        4,
        5
    ],
    "key4": {
        "key5": "test",
        "key6": 6
    }
}

で簡単にできます。

※ファイルに出力する場合は、「> json2.txt」を後につける。

UbuntuでJSONの整形に続く

2014年3月3日月曜日

Hadoopの環境構築

Apache Hiveを使用するために
Apache Hadoopの環境をシングルノードで構築します。

環境:Ubuntu 12.04

Java

Hadoopを使用するには、Javaのインストールが必要です。

User & Group


Hadoop用のUserとGroupを作成します。
$ sudo addgroup hadoop
$ sudo adduser --ingroup hadoop hadoop

SSH


HadoopはNode間の通信にSSHを使用するので設定が必要です。

sshの鍵(RSA暗号方式)を作成する。
$ su - hadoop
$ ssh-keygen -t rsa -P ""

$HOME/.ssh/ディレクトリに秘密鍵(id_rsa)と公開鍵(id_rsa.pub)が作成される。
※本来はパスワードを設定するが、今回は未設定とする。

公開鍵を設定ファイル(authorized_keys)に保存
$ cp $HOME/.ssh/id_rsa.pub $HOME/.ssh/authorized_keys

接続確認
$ ssh localhost

Hadoop


Hadoopを下記からダウンロード

http://www.apache.org/dyn/closer.cgi/hadoop/common/

ダウンロードしたファイルを解凍し、ユーザ、グループ、権限の設定を行う。
$ cd /usr/local
$ sudo tar xzf hadoop-1.2.1.tar.gz
$ sudo mv hadoop-1.2.1 hadoop
$ sudo chown -R hduser:hadoop hadoop
$ sudo mv hadoop-1.2.1/ hadoop

環境変数


$HOME/.profileに下記を追加

export HADOOP_PREFIX=/usr/local/hadoop

unalias fs &> /dev/null
alias fs="hadoop fs"
unalias hls &> /dev/null
alias hls="fs -ls"

export PATH=$PATH:$HADOOP_PREFIX/bin

/usr/local/hadoop/conf/hadoop-env.shの下記を修正

# The java implementation to use.  Required.
export JAVA_HOME=/usr/lib/jvm/java-7-oracle

データの保存先設定


データ保存用のディレクトリを作成し、ユーザ、グループ、権限の設定を行う。
$ sudo mkdir -p /app/hadoop/tmp
$ sudo chown hadoop:hadoop /app/hadoop/tmp
$ sudo chmod 750 /app/hadoop/tmp

/usr/local/hadoop/conf/core-site.xmlに下記を追加

<property>
  <name>hadoop.tmp.dir</name>
  <value>/app/hadoop/tmp</value>
</property>
<property>
  <name>fs.default.name</name>
  <value>hdfs://localhost:54310</value>
</property>

/usr/local/hadoop/conf/mapred-site.xmlに下記を追加

<property>
  <name>mapred.job.tracker</name>
  <value>localhost:54311</value>
</property>

/usr/local/hadoop/conf/hdfs-site.xmlに下記を追加

<property>
  <name>dfs.replication</name>
  <value>1</value>
</property>

NameNodeの初期化


$ /usr/local/hadoop/bin/hadoop namenode -format

Hadoopの起動


$ /usr/local/hadoop/bin/start-all.sh

動作確認


/home/hadoop/sampleの配下に適当なファイルを作成し、下記を実行
$ hadoop dfs -copyFromLocal /home/hadoop/sample /data/sample

 下記のコマンドでコピーされたことを確認
$ hadoop dfs -ls /data/sample

Hadoopの終了


$ /usr/local/hadoop/bin/stop-all.sh