JobTrackerを起動しようとしたら『Does not contain a valid host:port authority: local』のエラー
yumでインストールしたhadoopで、JobTrackerを起動しようとしたところ、以下のエラーが発生。
2013-02-25 16:11:28,920 FATAL org.apache.hadoop.mapred.JobTracker: java.lang.IllegalArgumentException: Does not contain a valid host:port authority: local at org.apache.hadoop.net.NetUtils.createSocketAddr(NetUtils.java:162) at org.apache.hadoop.net.NetUtils.createSocketAddr(NetUtils.java:128) at org.apache.hadoop.mapred.JobTracker.getAddress(JobTracker.java:2560) at org.apache.hadoop.mapred.JobTracker.(JobTracker.java:2200) at org.apache.hadoop.mapred.JobTracker. (JobTracker.java:2192) at org.apache.hadoop.mapred.JobTracker. (JobTracker.java:2186) at org.apache.hadoop.mapred.JobTracker.startTracker(JobTracker.java:300) at org.apache.hadoop.mapred.JobTracker.startTracker(JobTracker.java:291) at org.apache.hadoop.mapred.JobTracker.main(JobTracker.java:4978)
参考にしてたサイトのHadoopのバージョン(0.1系)と、自分が試していたバージョン(1系)が違った為、設定する名前が違った模様。
mapred-site.xml
『mapreduce.jobtracker.address』を『mapred.job.tracker』に変更。
<configuration> <property> <name>mapreduce.jobtracker.address</name> <value>master:54311</value> </property> <property> <name>mapreduce.cluster.local.dir</name> <value>${hadoop.tmp.dir}/mapred</value> </property> </configuration>
↓
<configuration> <property> <name>mapred.job.tracker</name> <value>master:54311</value> </property> <property> <name>mapreduce.cluster.local.dir</name> <value>${hadoop.tmp.dir}/mapred</value> </property> </configuration>
FuelPHPでMongoDBを使用する場合のサンプル
設定については下記URL参照。
http://fuelphp.jp/docs/1.5/classes/mongo/introduction.html
FuelPHPのMongoDBクラスを使用したデータ取得等のサンプル。
想定バージョン : FuelPHP 1.5
instance
<?php $mongo = \Mongo_Db::instance();
get / get_one / get_where
データ取得系
<?php // SELECT * FROM $collection_name WHERE type = 1; $mongo->where(array('type' => 1)); $result1 = $mongo->get($collection_name); // SELECT * FROM $collection_name WHERE type = 1 LIMIT 1; $mongo->where(array('type' => 1)); $result2 = $mongo->get_one($collection_name); // SELECT * FROM $collection_name WHERE type = 1 LIMIT $limit; $result3 = $mongo->get_where($collection_name, where(array('type' => 1)), $limit);
get_cursor
結果を全て変数に格納するわけではなく、都度取得する形の為、データサイズを抑えられる。
<?php $mongo->where(array('type' => 1)); $result = $mongo->get_cursor($collection_name)->skip(100)->limit(3); var_dump($result->getNext()); // このタイミングで問い合わせが発生 // または foreach ($result as $val) { var_dump($val); // このタイミングで問い合わせが発生 }
select
<?php // SELECT name FROM $collection_name; $mongo->select(array('name')); $result = $mongo->get($collection_name); // 上記とは逆に、nameを除外 $mongo->select(array(), array('name'));
WHERE条件
取得データの型とWHEREで指定する値の型が合っていないとひっかからない為注意
<?php // SELECT * FROM $collection_name WHERE type = 1; $mongo->where(array('type' => 1)); $result = $mongo->get($collection_name); // WHERE type = 1 OR type = 2 $mongo->or_where(array('type' => 1))->or_where(array('type' => 2)); // WHERE type IN (1, 2) $mongo->where_in('type', array(1, 2)); // typeに1,2,3が全て含まれるものが対象 $mongo->where_in_all('type', array(1, 2, 3)); // typeに1,2,3どの値も含まれないいないものが対象 $mongo->where_not_in('type', array(1, 2, 3)); // WHERE type > 5 $mongo->where_gt(array('type', 5)); // WHERE type >= 5 $mongo->where_gte(array('type', 5)); // WHERE type < 10; $mongo->where_lt(array('type', 10)); // WHERE type <= 10 $mongo->where_lte(array('type', 10)); // WHERE type BETWEEN 5 AND 10; $mongo->where_between('type', 5, 10); // WHERE type > 5 AND type < 10; $mongo->where_between_ne('type', 5, 10); // WHERE type <> 1; $mongo->where_ne('type', 1); // WHERE name LIKE '%fran%'; $mongo->like('name', 'fran', 'im', true, true);
※likeの3番目の引数についてはmethod_likeを参照
count
<?php // SELECT COUNT(*) FROM $collection_name; $num = $mongo->count($collection_name);
insert / update / update_all / delete
更新系
<?php /* * INSERT INTO $collection_name * (name, surname, email) * VALUES * ('John', 'Doe', 'dont.em@ilme.com'); */ $insert_id = $mongo->insert($collection_name, array( 'name' => 'John', 'surname' => 'Doe', 'email' => 'dont.em@ilme.com', )); /* * UPDATE * $collection_name * SET * surname = 'Doe2' * WHERE * name => 'John' * LIMIT 1; */ $bool = $mongo->where(array('name' => 'John'))->update($collection_name, array( 'surname' => 'Doe2', )); /* * UPDATE * $collection_name * SET * surname = 'Doe3' * WHERE * name => 'John'; */ $bool = $mongodb->where(array('name' => 'John'))->update_all($collection_name, array( 'surname' => 'Doe3', )); /* * DELETE FROM $collection_name WHERE name = 'John' LIMIT 1; */ $bool = $mongodb->where(array('name' => 'John'))->delete($collection_name); /* * DELETE FROM $collection_name WHERE name = 'John'; */ $bool = $mongodb->where(array('name' => 'John'))->delete_all($collection_name);
Macターミナルのプロンプトの色を変更
※2013/02/12追記
(要調査)下記設定を行った場合、ターミナルの横幅を超える文字列を入力すると表示がおかしくなるようです
コメントで頂きました。ありがとうございます!
制御文字列を \[ \] で囲むといけるようです。
Macのターミナルが
こんな感じや
こんな感じで、プロンプトとコマンドが同じ色で、若干見づらいので変更。
ターミナルで古いものを遡る時も、色付いてた方が見やすいしね。
初期状態
初期状態では以下が設定されているので、これをベースに色を付ける。
$ echo $PS1 PS1='\h:\W \u\$ '
※\h や \W 等の意味は下記URL参照
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/002cngprmpt.html
色
以下の表を参考に色を決定。
Regular | Bold | Underline | Background | |
---|---|---|---|---|
Black | \e[0;30m | \e[1;30m | \e[4;30m | \e[40m |
Red | \e[0;31m | \e[1;31m | \e[4;31m | \e[41m |
Green | \e[0;32m | \e[1;32m | \e[4;32m | \e[42m |
Yellow | \e[0;33m | \e[1;33m | \e[4;33m | \e[43m |
Blue | \e[0;34m | \e[1;34m | \e[4;34m | \e[44m |
Purple | \e[0;35m | \e[1;35m | \e[4;35m | \e[45m |
Cyan | \e[0;36m | \e[1;36m | \e[4;36m | \e[46m |
White | \e[0;37m | \e[1;37m | \e[4;37m | \e[47m |
Reset | \e[0m |
---|
例)
- Red --> \e[0;30m
- Green Bold --> \e[1;32m
試しに
まずはターミナル上で色々試してみる。
環境変数PS1に対し、上記の色の設定を入れれば、それ以降が指定の色になるのだけれど、コマンドも同じ色になってしまう為、最後にリセットのコードを入れてやる。
例1
$ PS1='\e[0;31m\h:\W \u\$ \e[0m'
例2
$ PS1='\e[1;34m\h:\W \e[1;32m\u\$ \e[0m'
例3
$ PS1='\e[46m\h:\W \u\$\e[0m '
設定
色が決まれば、単純に『~/.bash_profile』に設定を追記すればOK。
...のはずなんだけど、Macのターミナルは初期で背景色が違うプロファイルが複数あり、どのプロファイルでターミナルを立ち上げても、同じPS1になり、かえって見づらくなってしまう。
そこでプロファイル毎の設定を行う。
『ターミナル > 環境設定 > 設定するプロファイル > シェル』 の『起動』に以下を設定。
- 『コマンドを実行』にチェックを入れ、『PS1='(実際に設定する値)'; clear』を入力
- 『シェル内で実行』にチェックを入れる
※ターミナルを立ち上げる度、コマンド履歴にPS1の設定が残ってしまうのが難点。
VMwarePlayerを使用したPHP開発環境の構築手順
Linux初心者向けに、VMwarePlayerを使用した開発環境の構築手順をレクチャーする機会があったので、メモとして書き残しておきます。
簡単に環境を用意したい場合、あらかじめserverを含んだイメージを使用するのが楽ですが、今回は勉強も兼ねてminimalのイメージを使用。(manすら入っていないという...)
1. VMware Playerインストール
VMware Playerが無いと始まらないので、下記URLよりVMware Playerをダウンロードしインストールします。個人利用であれば、無償で使用可能です。
http://www.vmware.com/jp/products/desktop_virtualization/player/overview.html
2. CentOSのイメージを入手
手っ取り早く、下記サイトからCentOSのイメージ(CentOS 6.0, minimal install)をダウンロードし解凍します。
http://www.thoughtpolice.co.uk/vmware/
知らない奴が作ったイメージなんか使えるかー!って人は、こういうサイトを参考にisoからインストールすればいいと思うよ。
VMware PlayerでCentOSをインストール | Yukun's Blog
簡単!CentOS仮想環境の作り方 (Windows編) | ブログ | 株式会社イー・エージェンシー
4. root用パスワード変更
CentOSが立ち上がったら、まずはrootでログインし、
この訳の分からない初期パスワード(thoughtpolice)を変更します。
# passwd New password: {新規パスワード入力} Retype new password: {新規パスワード入力}
5. キーボード変更
ダウンロードしたイメージは、初期が英語キーボードになっているので、
日本語キーボードに変更します。
# vi /etc/sysconfig/keyboard KEYTABLE="jp106"
7. ネットワーク設定
さらにはネットワークまで初期ではオンにならない為、設定します。
今回は固定のIPアドレスではなくDHCPで設定。
# vi /etc/sysconfig/network-scripts/ifcfg-eth0 BOOTPROTO="dhcp" ONBOOT="yes" # service network restart
問題なくIPアドレスが取得出来ているか確認。
# ifconfig
8. ユーザー作成
プライベートな開発環境とはいえ、常にrootで作業するわけにもいかないので、ユーザーを作成後、パスワード設定を行います。
# useradd {ユーザー名} # passwd {ユーザー名}
※この時点のコピーなりスナップショットなりを取っておけば、環境が簡単に増やせたり、元に戻せたりするので楽
9. SSH接続
ここまでの設定が完了したら、SSHで接続出来る状態になっているはずです。
使い慣れたSSHクライアントを使用し、『7. ネットワーク設定』で確認したIPアドレスに対し、『8. ユーザー作成』で作成したユーザーでSSH接続を行います。
10. 各種インストール
yumを使用しApache, MySQL, PHPのインストールを行います。
10.1. Apache
# yum install httpd httpd-devel # service httpd start
10.2. MySQL
# yum install mysql-server mysql-devel # service mysqld start # /usr/bin/mysql_secure_installation
10.3. PHP
用途に応じて必要なパッケージをインストール
# yum install php-cli php-common php-devel php-mysql php-xml php-mbstring
11. iptables設定
初期状態では80番ポートへのアクセスが、iptablesで弾かれていますので、アクセス出来るよう設定を変更します。
# vi /etc/sysconfig/iptables -A INPUT -p tcp --dport 80 -j ACCEPT # service iptables restart
12. ページ表示
ここまで完了したら、PHPの動作確認を行います。
DocumentRoot配下に、以下のような適当なPHPファイルを配置し、他のマシンのブラウザから見えればOK!
# echo '<?php phpinfo() ?>' > /var/www/html/info.php
補足
他にも行った方がいいであろう設定
- NTP設定
- ユーザーの鍵登録
- sudo設定
FuelPHPのMongoDBクラスで『_id』を条件にfindする
想定バージョン : FuelPHP 1.4
MongoDBのドキュメントは『_id』というユニークなキーを持っています。
http://www.mongodb.org/pages/viewpage.action?pageId=7831684
『_id』については、上記公式サイトに詳しい説明が載っていますが、
通常、下記のように、12バイトの値が自動割り振られます。
> db.hoge.insert({name:"test1"}) > db.hoge.find() { "_id" : ObjectId("50ebba320296f684bea7c51f"), "name" : "test1" }
割り振られるのが、オブジェクトID用の特別なBSONデータタイプの為、
検索時、値をそのまま渡してしまうと、何もひっかかりません。
// ひっかからない > db.hoge.find({_id:"50ebba320296f684bea7c51f"}) // ひっかかる > db.hoge.find({_id:ObjectId("50ebba320296f684bea7c51f")}) { "_id" : ObjectId("50ebba320296f684bea7c51f"), "name" : "test1" }
これはFuelPHPのMongoDBクラスでも同じです。
<?php ... $mongo = \Mongo_Db::instance(); print_r($mongo->get_where('hoge', array('_id' => '50ebba320296f684bea7c51f'))); /* [結果] * Array * ( * ) */
で、本題の『_id』をピンポイントで取得する方法ですが、
FuelPHPのMongoDBクラスには、これ用の関数が用意されていない為、
PECL mongoのMongoIdを使用します。
<?php ... $mongo = \Mongo_Db::instance(); print_r($mongo->get_where('hoge', array('_id' => new \MongoId('50ebba320296f684bea7c51f')))); /* [結果] * Array * ( * [0] => Array * ( * [_id] => MongoId Object * ( * [$id] => 50ebba320296f684bea7c51f * ) * * [name] => test1 * ) * ) */
ちなみに、MongoDBクラスで取得した『_id』は、
以下のようにそのまま使用可能です。
<?php ... $mongo = \Mongo_Db::instance(); $hoge_list = $mongo->get('hoge'); foreach ($hoge_list as $hoge) { $mongo->where(array('_id' => $val['_id']))->update('hoge', array( 'name' => 'test2' )); }
Redis各種コマンドの有効バージョン一覧
Redisの各種コマンドの使用可能バージョン一覧。
(※2012/12/30時点でのRedis最新バージョンは2.6.7)
コマンド一覧)
Command reference – Redis
string
コマンド | 有効バージョン | リンク |
---|---|---|
APPEND | 2.0.0. | ※ |
BITCOUNT | 2.6.0. | ※ |
BITOP | 2.6.0. | ※ |
DECR | 1.0.0. | ※ |
DECRBY | 1.0.0. | ※ |
GET | 1.0.0. | ※ |
GETBIT | 2.2.0. | ※ |
GETRANGE | 2.4.0. | ※ |
GETSET | 1.0.0. | ※ |
INCR | 1.0.0. | ※ |
INCRBY | 1.0.0. | ※ |
INCRBYFLOAT | 2.6.0. | ※ |
MGET | 1.0.0. | ※ |
MSET | 1.0.1. | ※ |
MSETNX | 1.0.1. | ※ |
PSETEX | 2.6.0. | ※ |
SET | 1.0.0. | ※ |
SETBIT | 2.2.0. | ※ |
SETEX | 2.0.0. | ※ |
SETNX | 1.0.0. | ※ |
SETRANGE | 2.2.0. | ※ |
STRLEN | 2.2.0. | ※ |
server
コマンド | 有効バージョン | リンク |
---|---|---|
BGREWRITEAOF | 1.0.0. | ※ |
BGSAVE | 1.0.0. | ※ |
CLIENT KILL | 2.4.0. | ※ |
CLIENT LIST | 2.4.0. | ※ |
CONFIG GET | 2.0.0. | ※ |
CONFIG SET | 2.0.0. | ※ |
CONFIG RESETSTAT | 2.0.0. | ※ |
DBSIZE | 1.0.0. | ※ |
DEBUG OBJECT | 1.0.0. | ※ |
DEBUG SEGFAULT | 1.0.0. | ※ |
FLUSHALL | 1.0.0. | ※ |
FLUSHDB | 1.0.0. | ※ |
INFO | 1.0.0. | ※ |
LASTSAVE | 1.0.0. | ※ |
MONITOR | 1.0.0. | ※ |
SAVE | 1.0.0. | ※ |
SHUTDOWN | 1.0.0. | ※ |
SLAVEOF | 1.0.0. | ※ |
SLOWLOG | 2.2.12. | ※ |
SYNC | 1.0.0. | ※ |
TIME | 2.6.0. | ※ |
list
コマンド | 有効バージョン | リンク |
---|---|---|
BLPOP | 2.0.0. | ※ |
BRPOP | 2.0.0. | ※ |
BRPOPLPUSH | 2.2.0. | ※ |
LINDEX | 1.0.0. | ※ |
LINSERT | 2.2.0. | ※ |
LLEN | 1.0.0. | ※ |
LPOP | 1.0.0. | ※ |
LPUSH | 1.0.0. | ※ |
LPUSHX | 2.2.0. | ※ |
LRANGE | 1.0.0. | ※ |
LREM | 1.0.0. | ※ |
LSET | 1.0.0. | ※ |
LTRIM | 1.0.0. | ※ |
RPOP | 1.0.0. | ※ |
RPOPLPUSH | 1.2.0. | ※ |
RPUSH | 1.0.0. | ※ |
RPUSHX | 2.2.0. | ※ |
generic
コマンド | 有効バージョン | リンク |
---|---|---|
DEL | 1.0.0. | ※ |
DUMP | 2.6.0. | ※ |
EXISTS | 1.0.0. | ※ |
EXPIRE | 1.0.0. | ※ |
EXPIREAT | 1.2.0. | ※ |
KEYS | 1.0.0. | ※ |
MIGRATE | 2.6.0. | ※ |
MOVE | 1.0.0. | ※ |
OBJECT | 2.2.3. | ※ |
PERSIST | 2.2.0. | ※ |
PEXPIRE | 2.6.0. | ※ |
PEXPIREAT | 2.6.0. | ※ |
PTTL | 2.6.0. | ※ |
RANDOMKEY | 1.0.0. | ※ |
RENAME | 1.0.0. | ※ |
RENAMENX | 1.0.0. | ※ |
RESTORE | 2.6.0. | ※ |
SORT | 1.0.0. | ※ |
TTL | 1.0.0. | ※ |
TYPE | 1.0.0. | ※ |
transactions
コマンド | 有効バージョン | リンク |
---|---|---|
DISCARD | 2.0.0. | ※ |
EXEC | 1.2.0. | ※ |
MULTI | 1.2.0. | ※ |
UNWATCH | 2.2.0. | ※ |
WATCH | 2.2.0. | ※ |
scripting
コマンド | 有効バージョン | リンク |
---|---|---|
EVAL | 2.6.0. | ※ |
EVALSHA | 2.6.0. | ※ |
SCRIPT EXISTS | 2.6.0. | ※ |
SCRIPT FLUSH | 2.6.0. | ※ |
SCRIPT KILL | 2.6.0. | ※ |
SCRIPT LOAD | 2.6.0. | ※ |
hash
コマンド | 有効バージョン | リンク |
---|---|---|
HDEL | 2.0.0. | ※ |
HEXISTS | 2.0.0. | ※ |
HGET | 2.0.0. | ※ |
HGETALL | 2.0.0. | ※ |
HINCRBY | 2.0.0. | ※ |
HINCRBYFLOAT | 2.6.0. | ※ |
HKEYS | 2.0.0. | ※ |
HLEN | 2.0.0. | ※ |
HMGET | 2.0.0. | ※ |
HMSET | 2.0.0. | ※ |
HSET | 2.0.0. | ※ |
HSETNX | 2.0.0. | ※ |
HVALS | 2.0.0. | ※ |
pubsub
コマンド | 有効バージョン | リンク |
---|---|---|
PSUBSCRIBE | 2.0.0. | ※ |
PUBLISH | 2.0.0. | ※ |
PUNSUBSCRIBE | 2.0.0. | ※ |
SUBSCRIBE | 2.0.0. | ※ |
UNSUBSCRIBE | 2.0.0. | ※ |
set
コマンド | 有効バージョン | リンク |
---|---|---|
SADD | 1.0.0. | ※ |
SCARD | 1.0.0. | ※ |
SDIFF | 1.0.0. | ※ |
SDIFFSTORE | 1.0.0. | ※ |
SINTER | 1.0.0. | ※ |
SINTERSTORE | 1.0.0. | ※ |
SISMEMBER | 1.0.0. | ※ |
SMEMBERS | 1.0.0. | ※ |
SMOVE | 1.0.0. | ※ |
SPOP | 1.0.0. | ※ |
SRANDMEMBER | 1.0.0. | ※ |
SREM | 1.0.0. | ※ |
SUNION | 1.0.0. | ※ |
SUNIONSTORE | 1.0.0. | ※ |
sorted_set
コマンド | 有効バージョン | リンク |
---|---|---|
ZADD | 1.2.0. | ※ |
ZCARD | 1.2.0. | ※ |
ZCOUNT | 2.0.0. | ※ |
ZINCRBY | 1.2.0. | ※ |
ZINTERSTORE | 2.0.0. | ※ |
ZRANGE | 1.2.0. | ※ |
ZRANGEBYSCORE | 1.0.5. | ※ |
ZRANK | 2.0.0. | ※ |
ZREM | 1.2.0. | ※ |
ZREMRANGEBYRANK | 2.0.0. | ※ |
ZREMRANGEBYSCORE | 1.2.0. | ※ |
ZREVRANGE | 1.2.0. | ※ |
ZREVRANGEBYSCORE | 2.2.0. | ※ |
ZREVRANK | 2.0.0. | ※ |
ZSCORE | 1.2.0. | ※ |
ZUNIONSTORE | 2.0.0. | ※ |