【Facebook Presto:0】Presto 1Node で、動かす (Hive-CDH4 Plugin)
酒飲むのにも、飽きたので。。
FaceBook のエンジニアが、公開している
Presto | Distributed SQL Query Engine for Big Data
を、試してみる事にします。
まずは、1Node で、構築してみることに。
Install
以下を参考にします。
2. Installation — Presto 0.131 Documentation
Presto DownLoad
curl -L -O http://central.maven.org/maven2/com/facebook/presto/presto-server/0.56/presto-server-0.56.tar.gz
で、ダウンロードします。
そのあと、opt配下に、展開しました。
[root@ ~]# curl -L -O http://central.maven.org/maven2/com/facebook/presto/presto-server/0.56/presto-server-0.56.tar.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 85.7M 100 85.7M 0 0 4065k 0 0:00:21 0:00:21 --:--:-- 9745k [root@ ~]# cd /opt/ [root@ opt]# tar zxf ~/presto-server-0.56.tar.gz [root@ opt]# ls hive-0.9.0-shark-0.8.0-bin presto-server-0.56 scala-2.9.3 shark-0.8.0 spark
Config
Prestoのコンフィグを設定します。基本的に、展開した directory の配下に、etcを作りその配下に配置していきます。
また、Prestoは、Data Access に Connector を使用します。Connectorの設定は、etc/catalogの配下に配置します。
以下の設定は、1Nodeで動かす際の設定値です。
Connector は、HIVE-CDH4を使用しています。
[root@ ]# cd /opt/presto-server-0.56/ [root@ presto-server-0.56]# mkdir etc [root@ presto-server-0.56]# mkdir etc/catalog [root@ presto-server-0.56]# ls NOTICE README.txt bin etc lib plugin
etc/node.properties
[root@ presto-server-0.56]# vi etc/node.properties [root@ presto-server-0.56]# cat etc/node.properties node.environment=production node.id=ffffffff-ffff-ffff-ffff-ffffffffffff node.data-dir=/var/presto/data [root@ presto-server-0.56]# mkdir -p /var/presto/data
etc/jvm.config
[root@ presto-server-0.56]# vi etc/jvm.config [root@ presto-server-0.56]# cat etc/jvm.config -server -Xmx512M -XX:+UseConcMarkSweepGC -XX:+ExplicitGCInvokesConcurrent -XX:+CMSClassUnloadingEnabled -XX:+AggressiveOpts -XX:+HeapDumpOnOutOfMemoryError -XX:OnOutOfMemoryError=kill -9 %p -XX:PermSize=150M -XX:MaxPermSize=150M -XX:ReservedCodeCacheSize=150M -Xbootclasspath/p:/opt/presto-server-0.56/lib/floatingdecimal-0.1.jar
etc/config.properties
[root@ presto-server-0.56]# vi etc/config.properties [root@ presto-server-0.56]# cat etc/config.properties coordinator=true datasources=jmx,hive http-server.http.port=9090 presto-metastore.db.type=h2 presto-metastore.db.filename=var/db/MetaStore task.max-memory=256GB discovery-server.enabled=true discovery.uri=http://localhost:9090
etc/log.properties
[root@ presto-server-0.56]# vi etc/log.properties [root@ presto-server-0.56]# cat etc/log.properties com.facebook.presto=DEBUG
etc/catalog/jmx.properties
[root@ presto-server-0.56]# vi etc/catalog/jmx.properties [root@ presto-server-0.56]# cat etc/catalog/jmx.properties connector.name=jmx
etc/catalog/hive.properties
[root@ presto-server-0.56]# vi etc/catalog/hive.properties [root@ presto-server-0.56]# cat etc/catalog/hive.properties connector.name=hive-cdh4 hive.metastore.uri=thrift://data3.hadoop.local:9083 hive.config.resources=/etc/hadoop/conf/core-site.xml,/etc/hadoop/conf/hdfs-site.xml
HIVE MetaException
HIVEのテーブルを使用するときに、
MetaException(message:org.apache.hadoop.hive.serde2.SerDeException SerDe xxxxxx does not exist)
が発生する事があります。
この場合、必要な jar を、HIVEのlibからもってくるか、ln -s で、connectorの中に配置します。
今回は、以下の感じになります。
[root@ ~]# ln -s /usr/lib/hive/lib/xxxxxx.jar plugin/hive-cdh4/
Run in the foreground
まずは、確認のため、foregroundで起動します。
bin/launcher run で、起動すると foreground です。
基本的な設定が間違っていなければ起動するはずです。*4
Command Line Tool
Presto を操作するための Command Line が用意されているので、DownLoad して使います。
curl -L -o presto http://central.maven.org/maven2/com/facebook/presto/presto-cli/0.56/presto-cli-0.56-executable.jar
で、DownLoadします。
そのあと、実行できるようにしておきます。
[root@ ~]# curl -L -o presto http://central.maven.org/maven2/com/facebook/presto/presto-cli/0.56/presto-cli-0.56-executable.jar % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 12.0M 100 12.0M 0 0 1875k 0 0:00:06 0:00:06 --:--:-- 8352k [root@ ~]# chmod 0744 presto [root@ ~]# ls -l presto -rwxr--r-- 1 root root 12683954 1月 3 14:17 2014 presto
Try (schema sys)
まず、sys の schema で確認してみます。
server は、Localhost, Connector(catalog)は、hive、schema をsysで指定します。
[root@ ~]# ./presto --server localhost:9090 --catalog hive --schema sys presto:sys> show tables; Table --------- alias catalog node query task (5 rows) Query 20140103_052416_00009_rajut, FINISHED, 1 node Splits: 2 total, 2 done (100.00%) 0:00 [5 rows, 90B] [35 rows/s, 647B/s]
presto:sys> select * from query; node_id | query_id | state | user | que --------------------------------------+-----------------------------+----------+------+----------------------------------------- ffffffff-ffff-ffff-ffff-ffffffffffff | 20140103_052412_00008_rajut | FINISHED | root | SELECT table_name FROM information_schem ffffffff-ffff-ffff-ffff-ffffffffffff | 20140103_052451_00010_rajut | RUNNING | root | select * from query . . . Query 20140103_052451_00010_rajut, FINISHED, 1 node Splits: 2 total, 2 done (100.00%) 3:36 [22 rows, 3.78KB] [0 rows/s, 17B/s]
ちゃんと、動いているようです。
Try (schema default)
すでに Hadoop HIVE で、作成していたテーブルを使用します。
schema をdefaultで指定します。
[root@ ~]# /opt/presto-server-0.56/bin/launcher start Started as 19014 [root@ ~]# ./presto --server localhost:9090 --catalog hive --schema default presto:default> show tables; Table --------------------------------------- oracle_sysstat . . . Query 20140104_070906_00002_ekdea, FINISHED, 1 node Splits: 2 total, 2 done (100.00%) 0:00 [8 rows, 347B] [41 rows/s, 1.75KB/s] presto:default> DESCRIBE oracle_sysstat; Column | Type | Null | Partition Key ----------+---------+------+--------------- time | varchar | true | false tag | varchar | true | false datetime | varchar | true | false name | varchar | true | false value | double | true | false (5 rows) Query 20140104_070915_00003_ekdea, FINISHED, 1 node Splits: 2 total, 1 done (50.00%) 0:01 [0 rows, 0B] [0 rows/s, 0B/s] presto:default> select time from oracle_sysstat limit 10; time ---------------------- 2013-10-31T13:24:50Z 2013-10-31T13:24:50Z 2013-10-31T13:24:50Z 2013-10-31T13:24:50Z 2013-10-31T13:24:50Z 2013-10-31T13:24:50Z 2013-10-31T13:24:50Z 2013-10-31T13:24:50Z 2013-10-31T13:24:50Z 2013-10-31T13:24:50Z (10 rows) Query 20140104_071917_00005_ekdea, FINISHED, 1 node Splits: 18 total, 1 done (5.56%) 0:35 [557K rows, 57.5MB] [15.8K rows/s, 1.63MB/s]
いい感じですね。。
まとめ
以外と簡単に動かす事ができました。
いろんな、データストアーに対して、単一の方法でクエリーをかける可能性は魅力的。
つぎは、複数ノードにトライしてみようかな。
2013 大晦日
ちょっとした時間ができた。
せっかくだから、なにか書き留めておこう。
はじめとおわりの日記
Mahout で、書き初めて Sparkで、終わってる。
どちらも、それほど使い込んだわけではないのだけど、そういう方向だったんだなぁ、
ってのは、いまさらながらに、気が付いた。
貯蔵庫としての、データベースに一種類の入れ物を使うのではなくて、
用途に合わせた容器と素材とお値段で、賄うのが、ようやく広まりそうな気配。
その上で、うまいとかまずいとかを断定するには、いたってないとおもうけど。
機械学習は、まだまだ、来年以降かなぁと、思って終わっていく大晦日だった。
組織のこと
何年間かかかったけれど、無から作りはじめた組織を、世代交代できたのはよかた。
いまでは、当たり前のように、データベースの技術者やJava APサーバ
の技術者やらが、プロパの基盤の中にいるけれど、そんなもの、なかったからなぁ。w
SIerに騙されない、製品ベンダーから必要な知識を引き出す、とか、
まぁ、少しはましになった程度で降りちゃうけど、じじいが、いつまでやってても
いいことないしね。
おかげで、一人で、組織の面倒を見ない生活ができて、今年の終わりはよい終わり方だった。
老兵は...
世代交代を早めていかないと、色んな事が確実に間に合わない。
自分が組織を世代交代をしたのも、その意思表示なんだけど。
進むのに邪魔な、「文化」「空気」「価値観」とかは、老害から産まれているもの
が多いのも、実感できたし。
それは、僕らと僕らの上の世代が作り上げた、おりのようなものなのかなぁ。*1
人生の半世紀を去年終え、新しい半世紀の新年度の今年は、
確かにそれまでとは色々、違っていくのだと感じた。
エンジニア
なりたかったけど、なれなかったものだったんだよなぁ。
エンジニアという人材を、組織の中で
「愛嬌」があり、
「変」だったり
「異質」だったりもするが
「必要」で「尊敬」もできる
共存可能な生物としての生存権と生息域を作る
のが自分のエンジニアリングになっていく気がする。
コード読んだり書いたり、FreeSoft,OSS,企業の製品を、学んだりする事は、続けるけども
そこから、何かをアウトする事よりも、前述の方が、比較優位性でいうと効果高い。
あんまり、おもしろくはないけどなぁ。。
感謝
今年も、沢山の人やソフトウェアや、ハードウェアに、お世話になりました。
恩返しをするより先に、消えてなくなると思いますが、それまで、よしなに。。
よいおとしをおむかえください。。。
*1:自戒の念というか、おれだいじょうぶか? と、加齢臭なみに自覚が難しいのも目の当たりにして、色々、落ち込む現実もある。。。
【Spark:0】Localで、試す。
はじめに
次は、Spark をインストールしてみる。
まずは、ローカルで動かす。
インストール
- Spark は、ダウンロードして、展開するだけ。
インストールログ
[root@uldata14 ~]# curl -L -O http://spark-project.org/download/spark-0.8.0-incubating-bin-cdh4.tgz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 134M 100 134M 0 0 861k 0 0:02:39 0:02:39 --:--:-- 955k [root@uldata14 ~]# tar -zxvf spark-0.8.0-incubating-bin-cdh4.tgz
テスト
以下の資料の、最初の例をテストしてみる。
Quick Start - Spark 1.5.2 Documentation
[root@uldata14 ~]# cd spark-0.8.0-incubating-bin-cdh4 [root@uldata14 spark-0.8.0-incubating-bin-cdh4]# ./spark-shell Welcome to . . . Using Scala version 2.9.3 (OpenJDK 64-Bit Server VM, Java 1.6.0_24) Initializing interpreter... . . . . Spark context available as sc. Type in expressions to have them evaluated. Type :help for more information. scala>
shell が立ち上がった。
この時点で、4040ポートで、WebUIが見れる。
ほんでは、チュートリアルのまんま。
scala> val textFile = sc.textFile("README.md") xx/xx/xx xx:xx:17 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable xx/xx/xx xx:xx:18 INFO storage.MemoryStore: ensureFreeSpace(122019) called with curMem=0, maxMem=339585269 xx/xx/xx xx:xx:18 INFO storage.MemoryStore: Block broadcast_0 stored as values to memory (estimated size 119.2 KB, free 323.7 MB) textFile: org.apache.spark.rdd.RDD[String] = MappedRDD[1] at textFile at <console>:12 scala> textFile.count() xx/xx/xx xx:xx:27 INFO mapred.FileInputFormat: Total input paths to process : 1 xx/xx/xx xx:xx:27 INFO spark.SparkContext: Starting job: count at <console>:15 xx/xx/xx xx:xx:27 INFO scheduler.DAGScheduler: Got job 0 (count at <console>:15) with 1 output partitions (allowLocal=false) xx/xx/xx xx:xx:27 INFO scheduler.DAGScheduler: Final stage: Stage 0 (count at <console>:15) xx/xx/xx xx:xx:27 INFO scheduler.DAGScheduler: Parents of final stage: List() xx/xx/xx xx:xx:27 INFO scheduler.DAGScheduler: Missing parents: List() xx/xx/xx xx:xx:27 INFO scheduler.DAGScheduler: Submitting Stage 0 (MappedRDD[1] at textFile at <console>:12), which has no missing parents xx/xx/xx xx:xx:27 INFO scheduler.DAGScheduler: Submitting 1 missing tasks from Stage 0 (MappedRDD[1] at textFile at <console>:12) xx/xx/xx xx:xx:27 INFO local.LocalTaskSetManager: Size of task 0 is 1586 bytes xx/xx/xx xx:xx:27 INFO local.LocalScheduler: Running 0 xx/xx/xx xx:xx:27 INFO rdd.HadoopRDD: Input split: file:/root/spark-0.8.0-incubating-bin-cdh4/README.md:0+4215 xx/xx/xx xx:xx:27 INFO local.LocalScheduler: Finished 0 xx/xx/xx xx:xx:27 INFO local.LocalScheduler: Remove TaskSet 0.0 from pool xx/xx/xx xx:xx:27 INFO scheduler.DAGScheduler: Completed ResultTask(0, 0) xx/xx/xx xx:xx:27 INFO scheduler.DAGScheduler: Stage 0 (count at <console>:15) finished in 0.077 s xx/xx/xx xx:xx:27 INFO spark.SparkContext: Job finished: count at <console>:15, took 0.198733219 s res0: Long = 111 scala> textFile.first() xx/xx/xx xx:xx:52 INFO spark.SparkContext: Starting job: first at <console>:15 xx/xx/xx xx:xx:52 INFO scheduler.DAGScheduler: Got job 1 (first at <console>:15) with 1 output partitions (allowLocal=true) xx/xx/xx xx:xx:52 INFO scheduler.DAGScheduler: Final stage: Stage 1 (first at <console>:15) xx/xx/xx xx:xx:52 INFO scheduler.DAGScheduler: Parents of final stage: List() xx/xx/xx xx:xx:52 INFO scheduler.DAGScheduler: Missing parents: List() xx/xx/xx xx:xx:52 INFO scheduler.DAGScheduler: Computing the requested partition locally xx/xx/xx xx:xx:52 INFO rdd.HadoopRDD: Input split: file:/root/spark-0.8.0-incubating-bin-cdh4/README.md:0+4215 xx/xx/xx xx:xx:52 INFO spark.SparkContext: Job finished: first at <console>:15, took 0.006843296 s res1: String = # Apache Spark
こんな感じ。。
でも、この
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
が気になるので、HDFSにアクセスしてみる。
元データに、wikiを使ってみる。
curl -O http://dumps.wikimedia.org/jawiki/latest/jawiki-latest-pages-articles.xml.bz2
bunzip2 jawiki-latest-pages-articles.xml.bz2
7685681088バイト。
sudo -u hdfs hadoop fs -put /tmp/jawiki-latest-pages-articles.xml /jawiki-latest-pages-articles.xml
で、格納しておく。
scala> val textFile = sc.textFile("hdfs://10.29.254.14:8020/jawiki-latest-pages-articles.xml") . . textFile: org.apache.spark.rdd.RDD[String] = MappedRDD[1] at textFile at <console>:12 scala> textFile.count() . . . res0: Long = 117807835 scala> textFile.first() . . res1: String = <mediawiki xmlns="http://www.mediawiki.org/xml/export-0.8/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.8/ http://www.mediawiki.org/xml/export-0.8.xsd" version="0.8" xml:lang="ja">
一応、読めてるようだ。
Count中の、WebUIは、こんな感じ。
テスト追記
cacheの機能を試していなかったので、追加でテスト。
- README.mdを使う
- cache指定無しで、count
- cache指定
- 続けて、1回目 count
- 続けて、2回目 count
scala> val textFile = sc.textFile("README.md") scala> textFile.count() . . res0: Long = 111 scala> textFile.cache() res1: org.apache.spark.rdd.RDD[String] = MappedRDD[1] at textFile at <console>:12 scala> textFile.count() . . xxxx INFO spark.CacheManager: Cache key is rdd_1_0 xxxx INFO spark.CacheManager: Computing partition org.apache.spark.rdd.HadoopPartition@691 xxxx INFO rdd.HadoopRDD: Input split: file:/root/spark-0.8.0-incubating-bin-cdh4/README.md:0+4215 xxxx INFO storage.MemoryStore: ensureFreeSpace(14288) called with curMem=122019, maxMem=339585269 xxxx INFO storage.MemoryStore: Block rdd_1_0 stored as values to memory (estimated size 14.0 KB, free 323.7 MB) xxxx INFO storage.BlockManagerMasterActor$BlockManagerInfo: Added rdd_1_0 in memory on uldata14.hadoop.local:34076 (size: 14.0 KB, free: 323.8 MB) xxxx INFO storage.BlockManagerMaster: Updated info of block rdd_1_0 . res2: Long = 111 scala> textFile.count() . . xxxx INFO spark.CacheManager: Cache key is rdd_1_0 xxxx INFO spark.CacheManager: Found partition in cache! . res3: Long = 111
結果
- Cacheなし
- CPU time: 46 ms
- Cache あり
- 1回目 CPU time: 19 ms
- 2回目 CPU time: 2 ms
【mesos:3】mesosのクラスタ化
はじめに
殆ど、情報がなかった。多分、rpmでインストールしたせいと思う。
巷にあふれてる、mesos.confは、間違いなので、きをつけること。
尚、まだまだ、変わる気がする。。。
一応、動いていると思うけど、まだ、検証不足な状態。
環境
物理サーバ 3台 (x86_64)
Centos 6.4 (6.2から、yum updateで、バージョンアップ)
mesos_0.14
- 1台 master + slave
- 2台 slave
Open JDK 6
CDH4.2.1
- 1台 namenode + second namenode + JobTracker + datanode
- 2台 datanode
- replica 1
Client 端末から、サーバの名前解決可能。*1
インストール
- master のIPを設定する。*2 (2台にコピー)
- slave のIP設定をする。(2台にコピー)
- slave,masterの環境設定をする。(2台にコピー)
インストールログ
vi /usr/local/var/mesos/deploy/masters [root@uldata14 ~]# cat /usr/local/var/mesos/deploy/masters 10.29.254.14
vi /usr/local/var/mesos/deploy/slaves [root@uldata14 ~]# cat /usr/local/var/mesos/deploy/slaves 10.29.254.14 10.29.254.15 10.29.254.16
[root@uldata14 ~]# scp /usr/local/var/mesos/deploy/masters root@10.29.254.15:/usr/local/var/mesos/deploy/masters masters 100% 13 0.0KB/s 00:00 [root@uldata14 ~]# scp /usr/local/var/mesos/deploy/slaves root@10.29.254.15:/usr/local/var/mesos/deploy/slaves slaves 100% 26 0.0KB/s 00:00 [root@uldata14 ~]# scp /usr/local/var/mesos/deploy/masters root@10.29.254.16:/usr/local/var/mesos/deploy/masters masters 100% 13 0.0KB/s 00:00 [root@uldata14 ~]# scp /usr/local/var/mesos/deploy/slaves root@10.29.254.16:/usr/local/var/mesos/deploy/slaves slaves 100% 26 0.0KB/s 00:00
[root@uldata14 ~]# cp /usr/local/var/mesos/deploy/mesos-slave-env.sh.template /usr/local/var/mesos/deploy/mesos-slave-env.sh [root@uldata14 ~]# cat /usr/local/var/mesos/deploy/mesos-slave-env.sh # This file contains environment variables that are passed to mesos-slave. # To get a description of all options run mesos-slave --help; any option # supported as a command-line option is also supported as an environment # variable. # You must at least set MESOS_master. # The mesos master URL to contact. Should be host:port for # non-ZooKeeper based masters, otherwise a zk:// or file:// URL. export MESOS_master=10.29.254.14:5050 export MESOS_hadoop_home=/usr/lib/hadoop # Other options you're likely to want to set: export MESOS_log_dir=/var/log/mesos export MESOS_work_dir=/var/run/mesos # export MESOS_isolation=cgroups [root@uldata14 ~]# scp /usr/local/var/mesos/deploy/mesos-slave-env.sh root@10.29.254.15:/usr/local/var/mesos/deploy/mesos-slave-env.sh [root@uldata14 ~]# scp /usr/local/var/mesos/deploy/mesos-slave-env.sh root@10.29.254.16:/usr/local/var/mesos/deploy/mesos-slave-env.sh
[root@uldata14 ~]# vi /usr/local/var/mesos/deploy/mesos-master-env.sh [root@uldata14 ~]# cat /usr/local/var/mesos/deploy/mesos-master-env.sh# This file contains environment variables that are passed to mesos-master. # To get a description of all options run mesos-master --help; any option # supported as a command-line option is also supported as an environment # variable. # Some options you're likely to want to set: export MESOS_log_dir=/var/log/mesos
試し
mesos cluster start
[root@uldata14 ~]# mesos-start-cluster.sh [root@uldata14 ~]# ps aux | grep mesos-master root 17594 0.0 0.0 1393800 13764 ? Sl Oct03 0:39 /usr/local/sbin/mesos-master root 22204 0.0 0.0 107456 936 pts/1 S+ 14:25 0:00 grep mesos-master [root@uldata14 ~]# ps aux | grep mesos-slave root 17633 0.0 0.0 1393632 11620 ? Sl Oct03 0:15 /usr/local/sbin/mesos-slave root 22206 0.0 0.0 107456 940 pts/1 S+ 14:25 0:00 grep mesos-slave [root@uldata15 ~]# ps auxw | grep /usr/local/sbin/mesos-slave root 9425 0.0 0.0 1393632 11648 ? Sl Oct03 0:13 /usr/local/sbin/mesos-slave root 10715 0.0 0.0 107456 944 pts/0 S+ 14:25 0:00 grep /usr/local/sbin/mesos-slave [root@psdata16 ~]# ps aux | grep /usr/local/sbin/mesos-slave root 10645 0.0 0.0 1393632 11636 ? Sl Oct03 0:13 /usr/local/sbin/mesos-slave root 12168 0.0 0.0 107456 944 pts/0 S+ 14:26 0:00 grep /usr/local/sbin/mesos-slave
[root@uldata14 ~]# su - hadoop [hadoop@uldata14 ~]$ /usr/lib/hadoop/bin/start-hadoop-pssh.sh /usr/lib/hadoop/bin/start-hadoop-pssh.sh: line 4: /usr/lib/hadoop/bin/hadoop-config.sh: そのようなファイルやディレクトリはありません Starting Hadoop namenode: [ OK ] starting namenode, logging to /var/log/hadoop-hdfs/hadoop-hdfs-namenode-uldata14.hadoop.local.out Connection to uldata14.hadoop.local closed. Starting Hadoop secondarynamenode: [ OK ] starting secondarynamenode, logging to /var/log/hadoop-hdfs/hadoop-hdfs-secondarynamenode-uldata14.hadoop.local.out Connection to uldata14.hadoop.local closed. Starting Hadoop jobtracker daemon (hadoop-jobtracker): starting jobtracker, logging to /var/log/hadoop-0.20-mapreduce/hadoop-hadoop-jobtracker-uldata14.hadoop.local.out Connection to uldata14.hadoop.local closed. [ OK ] [1] 14:35:13 [SUCCESS] uldata14.hadoop.local Starting Hadoop datanode:[ OK ] starting datanode, logging to /var/log/hadoop-hdfs/hadoop-hdfs-datanode-uldata14.hadoop.local.out [2] 14:35:13 [SUCCESS] uldata15.hadoop.local Starting Hadoop datanode:[ OK ] starting datanode, logging to /var/log/hadoop-hdfs/hadoop-hdfs-datanode-uldata15.hadoop.local.out [3] 14:35:13 [SUCCESS] psdata16.hadoop.local Starting Hadoop datanode:[ OK ] starting datanode, logging to /var/log/hadoop-hdfs/hadoop-hdfs-datanode-psdata16.hadoop.local.out [1] 14:35:15 [SUCCESS] uldata14.hadoop.local Starting Hadoop tasktracker daemon (hadoop-tasktracker): starting tasktracker, logging to /var/log/hadoop-0.20-mapreduce/hadoop-hadoop-tasktracker-uldata14.hadoop.local.out [2] 14:35:15 [SUCCESS] uldata15.hadoop.local Starting Hadoop tasktracker daemon (hadoop-tasktracker): starting tasktracker, logging to /var/log/hadoop-0.20-mapreduce/hadoop-hadoop-tasktracker-uldata15.hadoop.local.out [3] 14:35:15 [SUCCESS] psdata16.hadoop.local Starting Hadoop tasktracker daemon (hadoop-tasktracker): starting tasktracker, logging to /var/log/hadoop-0.20-mapreduce/hadoop-hadoop-tasktracker-psdata16.hadoop.local.out
Hadoop のJob をスタート
[hadoop@uldata14 ~]$ hadoop jar /usr/lib/hadoop-0.20-mapreduce/hadoop-examples.jar pi 3 100
WebUI の説明は、ここ。Mesos - Cluster & Framework Mgmt
【mesos:2】Hadoop(CDH4.2.1)のmesos化
環境
物理サーバ 3台 (x86_64)
Centos 6.4 (6.2から、yum updateで、バージョンアップ)
Open JDK 6
CDH4.2.1 CDH 4.2.1 Documentation Archive
- 1台 namenode + second namenode + JobTracker + datanode
- 2台 datanode
- replica 1
インストール
インストールログ
BUILD hadoop-mesos-0.0.3.jar
[root@uldata14 ~]# cp hadoop-mesos-0.0.3.jar /usr/lib/hadoop-0.20-mapreduce/lib/
[root@uldata14 ~]# tar zxf mr1-2.0.0-mr1-cdh4.2.1.tar.gz [root@uldata14 ~]# cp hadoop-mesos-0.0.3.jar hadoop-2.0.0-mr1-cdh4.2.1/lib/ [root@uldata14 ~]# tar czf hadoop-2.0.0-mr1-cdh4.2.1.tar.gz hadoop-2.0.0-mr1-cdh4.2.1 [root@uldata14 ~]# cp hadoop-2.0.0-mr1-cdh4.2.1.tar.gz /tmp [root@uldata14 ~]# su - hadoop [hadoop@uldata14 ~]$ sudo -u hdfs hadoop fs -put /tmp/hadoop-2.0.0-mr1-cdh4.2.1.tar.gz /hadoop-2.0.0-mr1-cdh4.2.1.tar.gz
[root@uldata14 ~]# cat /etc/hadoop/conf/mapred-site.xml <configuration> <property> <name>mapred.local.dir</name> <value>/var/lib/hadoop-mapreduce/cache/mapred/</value> </property> <property> <name>mapred.job.tracker</name> <value>10.29.254.14:8021</value> </property> <property> <name>mapred.jobtracker.taskScheduler</name> <value>org.apache.hadoop.mapred.MesosScheduler</value> </property> <property> <name>mapred.mesos.taskScheduler</name> <value>org.apache.hadoop.mapred.JobQueueTaskScheduler</value> </property> <property> <name>mapred.mesos.master</name> <value>10.29.254.14:5050</value> </property> <property> <name>mapred.mesos.executor.uri</name> <value>hdfs://10.29.254.14:8020/hadoop-2.0.0-mr1-cdh4.2.1.tar.gz</value> <description> This is the URI of the Hadoop on Mesos distribution. NOTE: You need to MANUALLY upload this yourself! </description> </property> </configuration>
[root@uldata14 ~]# vi /etc/init.d/hadoop-0.20-mapreduce-jobtracker # mesos export MESOS_NATIVE_LIBRARY=/usr/local/lib/libmesos.so
実験
[hadoop@uldata14 ~]$ hadoop jar /usr/lib/hadoop-0.20-mapreduce/hadoop-examples.jar pi 10 10 Number of Maps = 10 Samples per Map = 10 Wrote input for Map #0 Wrote input for Map #1 Wrote input for Map #2 Wrote input for Map #3 Wrote input for Map #4 Wrote input for Map #5 Wrote input for Map #6 Wrote input for Map #7 Wrote input for Map #8 Wrote input for Map #9 Starting Job . . . Job Finished in 12.57 seconds Estimated value of Pi is 3.20000000000000000000
2013-10-02 xx:xx:xx,821 INFO org.apache.hadoop.mapred.JobInProgress: job_201310021831_0004: nMaps=10 nReduces=1 max=-1 2013-10-02 xx:xx:xx,837 INFO org.apache.hadoop.mapred.MesosScheduler: Added job job_201310021831_0004 2013-10-02 xx:xx:xx,837 INFO org.apache.hadoop.mapred.JobTracker: Job job_201310021831_0004 added successfully for user 'hadoop' to queue 'default'
【mesos:1】mesosの rpm インストール
インストール
インストールログ
[root@uldata14 yum.repos.d]# curl -L -O http://downloads.mesosphere.io/master/centos/6.4/mesos_0.14.0_x86_64.rpm
[root@uldata14 ~]# rpm -ivh mesos_0.14.0_x86_64.rpm /etc/default/mesos /etc/default/mesos-master /etc/default/mesos-slave /etc/init/mesos-master.conf /etc/init/mesos-slave.conf /etc/mesos/zk /usr/bin/mesos-init-wrapper /usr/local/bin/mesos-local /usr/local/bin/mesos-log /usr/local/bin/mesos-mesos /usr/local/include/mesos/executor.hpp /usr/local/include/mesos/mesos.hpp /usr/local/include/mesos/mesos.pb.h /usr/local/include/mesos/mesos.proto /usr/local/include/mesos/resources.hpp /usr/local/include/mesos/scheduler.hpp /usr/local/include/mesos/values.hpp /usr/local/lib/libmesos-0.14.0.so /usr/local/lib/libmesos.la /usr/local/lib/libmesos.so /usr/local/libexec/mesos/mesos-executor /usr/local/libexec/mesos/mesos-launcher /usr/local/sbin/mesos-daemon.sh /usr/local/sbin/mesos-master /usr/local/sbin/mesos-slave /usr/local/sbin/mesos-start-cluster.sh /usr/local/sbin/mesos-start-masters.sh /usr/local/sbin/mesos-start-slaves.sh /usr/local/sbin/mesos-stop-cluster.sh /usr/local/sbin/mesos-stop-masters.sh /usr/local/sbin/mesos-stop-slaves.sh /usr/local/share/mesos/webui/master/static/browse.html /usr/local/share/mesos/webui/master/static/css/bootstrap-2.3.2.min.css /usr/local/share/mesos/webui/master/static/css/bootstrap-responsive-2.3.2.min.css /usr/local/share/mesos/webui/master/static/css/graph.css /usr/local/share/mesos/webui/master/static/css/mesos.css /usr/local/share/mesos/webui/master/static/dashboard.html /usr/local/share/mesos/webui/master/static/framework.html /usr/local/share/mesos/webui/master/static/frameworks.html /usr/local/share/mesos/webui/master/static/home.html /usr/local/share/mesos/webui/master/static/ico/favicon.ico /usr/local/share/mesos/webui/master/static/img/glyphicons-halflings-white.png /usr/local/share/mesos/webui/master/static/img/glyphicons-halflings.png /usr/local/share/mesos/webui/master/static/img/loading.gif /usr/local/share/mesos/webui/master/static/index.html /usr/local/share/mesos/webui/master/static/js/angular-1.0.7.js /usr/local/share/mesos/webui/master/static/js/angular-1.0.7.min.js /usr/local/share/mesos/webui/master/static/js/app.js /usr/local/share/mesos/webui/master/static/js/controllers.js /usr/local/share/mesos/webui/master/static/js/cubism.v1.js /usr/local/share/mesos/webui/master/static/js/cubism.v1.min.js /usr/local/share/mesos/webui/master/static/js/d3.v2.js /usr/local/share/mesos/webui/master/static/js/d3.v2.min.js /usr/local/share/mesos/webui/master/static/js/dashboard.js /usr/local/share/mesos/webui/master/static/js/jquery-1.7.1.js /usr/local/share/mesos/webui/master/static/js/jquery-1.7.1.min.js /usr/local/share/mesos/webui/master/static/js/jquery.pailer.js /usr/local/share/mesos/webui/master/static/js/relative-date.js /usr/local/share/mesos/webui/master/static/js/ui-bootstrap-tpls-0.4.0.js /usr/local/share/mesos/webui/master/static/js/ui-bootstrap-tpls-0.4.0.min.js /usr/local/share/mesos/webui/master/static/js/underscore-1.4.3.js /usr/local/share/mesos/webui/master/static/js/underscore-1.4.3.min.js /usr/local/share/mesos/webui/master/static/js/zeroclipboard-1.1.7.js /usr/local/share/mesos/webui/master/static/js/zeroclipboard-1.1.7.min.js /usr/local/share/mesos/webui/master/static/obj/zeroclipboard-1.1.7.swf /usr/local/share/mesos/webui/master/static/pailer.html /usr/local/share/mesos/webui/master/static/slave.html /usr/local/share/mesos/webui/master/static/slave_executor.html /usr/local/share/mesos/webui/master/static/slave_framework.html /usr/local/share/mesos/webui/master/static/slaves.html /usr/local/var/mesos/deploy/mesos-deploy-env.sh.template /usr/local/var/mesos/deploy/mesos-master-env.sh.template /usr/local/var/mesos/deploy/mesos-slave-env.sh.template /usr/share/doc/mesos/CHANGELOG /usr/share/java/mesos-0.14.0.jar /var/log/mesos
[root@uldata14 ~]# yum install java-1.6.0-openjdk.x86_64
[root@uldata14 lib64]# vi /etc/ld.so.conf.d/java-x86_64.conf [root@uldata14 lib64]# cat /etc/ld.so.conf.d/java-x86_64.conf /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/server [root@uldata14 lib64]# ldconfig
[root@uldata14 ~]# mesos-local
起動確認画面
琉球大学のオープンキャンパス 弾丸ツアー
色々、わけあって、琉球大学のオープンキャンパスへいってきた。
金曜日の最終便で、羽田から那覇につき、土曜日、一日キャンパスで、日曜日に帰る弾丸だった。
泊まったホテルは、ロワジール スパタワー 那覇<公式>|沖縄県那覇市唯一の天然温泉とスパトリートメントに癒されるホテルここ。
朝の景色は、こんな感じ。
朝、9時半から受付という事で、がんばって、大学へ親子三人で行くはめになる。
なんとか、間に合ったのだが、ともかく、大学が広い。
構内に、ジャングルとダムがあるという。。。
ついた所から、行く学部のあるところが遠かった。
ガイドの学生さんに、道を教わって歩いていると、
「むこうに用事ができましたので、一緒にいきましょう」と、さきほどの男子学生さん。
ひとしきり、話をしながら、歩いていきました。
橋をわたるんですけど、こんな風景。。。
県外からきた、学生さんだったので、アパートの話などききながら目的地へ。
「楽しい、キャンパスライフですよ!」
うーん、何十年ぶりかにきいたよ、キャンパスライフ。。。
「あのこ、うちらの為にきたのよ、ほんとは。ほら、走って帰ってくわ」と嫁。。
そのあとは、息子は、学部の説明会。
こちらは、することもなく、ぶらぶらと。。
昼から、親向けの説明があるので、そこに参加。
すると、息子から、嫁へ「終わった、楽しかった」のメール。
やれやれ、と、思っていると、嫁が「ヒッ」と。。。
「学部、間違えた」との、メール。。。
「メッセージの順番違わない?」と、憤る嫁と、そそくさと、退出し、息子と合流。
午後に聞けるから、いいやとの、判断だったらしいが。。。前途多難。。 (´・ω・`)
することはないかと、思っていると、寮の中を案内してくれるとの事。
で、バスをまつ。
なにやら、バスがきたのだが、どうも違うバスのようだと、思っていると
「こんな暑いのに待ってるの辛いですよね?独断で、このバスを寮行きにしちゃいます」と!
うーん、どの子も、基本的に明るくて、目の間にシワの寄ってない、昔の日本人みたいだなぁ。。
三段階の、グレードの寮を案内してもらう。
トイレ、シャワー、キッチン無し。
シャワー、キッチン無し。
全部あり。
一番上は、こんな感じで、ほぼ、アパート。
嫁いわく「あたしが、立ち入れないから、寮はないな」
まぁ、ドロドロになるだろーけどねぇ。。
沢山、歩いて、学生さんとも話をして、いい気持ちな時間を過ごせた。
なんにしろ、良い経験をさせていただきました。
ありがとうございました。