9月 12th, 2013
RからGreenplum DBぜ ODBC接続するRODBCの環? 設?
configure: error: "ODBC headers sql.h and sqlext.h not found"
configure: error: "no ODBC driver manager found"
checking size of long... configure: error: cannot compute sizeof (long), 77
R CMD INSTALLで? のようぜ configure errorが出ていたが、
以? のコマンドで接続まで確認できた。
# export LDFLAGS='-Xlinker -rpath /usr/local/greenplum-connectivity-4.2.5.0-build-1\
/drivers/odbc/psqlodbc-08.02.0500/unixodbc-2.2.12'
# export LD_LIBRARY_PATH=/usr/local/greenplum-connectivity-4.2.5.0-build-1/drivers\
/odbc/psqlodbc-08.02.0500/unixodbc-2.2.12
# R CMD INSTALL RODBC_1.3-5.tar.gz --configure-args='--with-odbc-manager=odbc \
--with-odbc-include=/usr/local/greenplum-connectivity-4.2.5.0-build-1/drivers/odbc\
/psqlodbc-08.02.0500/unixodbc-2.2.12/include --with-odbc-lib=/usr/local/greenplum-\
connectivity-4.2.5.0-build-1/drivers/odbc/psqlodbc-08.02.0500/unixodbc-2.2.12'
# vi /usr/local/greenplum-connectivity-4.2.5.0-build-1/greenplum_connectivity_path.sh
GP_ODBC_DRIVER=psqlodbc-08.02.0500
GP_ODBC_DRIVER_MANAGER=datadirect-52_64
~
# su - gpadmin
$ vi .odbc.ini
[greenplum]
Description = PostgreSQL driver for Greenplum
Driver = /usr/local/greenplum-connectivity-4.2.5.0-build-1/drivers/odbc\
/psqlodbc-08.02.0500/unixodbc-2.2.12/psqlodbcw.so
Trace = 1
Debug=1
Database = testdb
Servername = ms01
UserName = gpadmin
Password = password
Port = 5432
ReadOnly = No
RowVersioning = No
DisallowPremature = No
ShowSystemTables = Yes
ShowOidColumn = No
FakeOidIndex = No
useDeclareFetch = 1
Fetch = 4096
UpdatableCursors = No
Protocol = 7.4-1
$ export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/greenplum-connectivity-\
4.2.5.0-build-1/drivers/odbc/psqlodbc-08.02.0500/unixodbc-2.2.12"
$ R
> library(RODBC)
> ch < - odbcConnect("greenplum", uid="gpadmin", case="postgresql", pwd="password")
> sqlColumns(ch, "testtable")
> sqlQuery(ch, "SELECT * FROM testtable")
> odbcClose(ch)
12月 13th, 2012
Hadoop Troubleshooting 101の日本? 版スライドはこちらにあります。
http://www.slideshare.net/cloudera/hadoop-troubleshooting-101-japanese-version
ここにないケースで、shuffleフェーズで発生するOutOfMemoryErrorがありました。
使用バージョンぜ hadoop-0.20.2 なので、MAPREDUCE-1182のバグではないようです。
Error: java.lang.OutOfMemoryError: Java heap space
at org.apache.hadoop.mapred.ReduceTask$ReduceCopier$MapOutputCopier.shuffleInMemory(ReduceTask.java:1612)
at org.apache.hadoop.mapred.ReduceTask$ReduceCopier$MapOutputCopier.getMapOutput(ReduceTask.java:1472)
at org.apache.hadoop.mapred.ReduceTask$ReduceCopier$MapOutputCopier.copyOutput(ReduceTask.java:1321)
at org.apache.hadoop.mapred.ReduceTask$ReduceCopier$MapOutputCopier.run(ReduceTask.java:1253)
大容釜 ファイルぜ terasortを実行すれば簡単に再現します。
以? のようぜ Hadoopパラメータで対処できる事も゜ かりました。
ボ reducer最大スロット(mapred.tasktracker.reduce.tasks.maximum)の数値を下げて、TaskTracker子プロセスのヒープサイ゜ (mapred.child.java.opts)の割り当てを挙げる。試してませんが、shuffle中ぜ map出力を格? するために割り当てることができるメモリの割合(mapred.job.shuffle.input.buffer.percent)を上げるという対? も考えられます。
ボ reducerがデータ転送する為にパラレルに接続出来るTaskTrackerの? (mapred.reduce.parallel.copies)を必要以? に? ぜ しない 。デフォルトぜ 5だが、推奨値ぜ sqrt(ボ ード? )で、最作 値ぜ 10。
問題の発生するジョブにだけ適用させたいのぜ JobConfや実行時の? ? (-D)で指定するのでしょうか。
他に良い方? があればいいのですが。。
関連する情?
http://hadoop-common.472056.n3.nabble.com/Shuffle-In-Memory-OutOfMemoryError-td433197.html
9月 26th, 2012
CDH3ぜ Hadoopクラスタを構築し、クライアントとしぜ Azkaban-0.10を利用する場合、
クライアントからNameNodeへの接続が圏 れずに以下のようぜ Exceptionが発生する。
(Azkabanぜ HDFSディレクトリ圏 照? 能にアクセスすることで確認出来る)
javax.servlet.ServletException: java.io.IOException:
Call to namenode/10.10.10.1:8020 failed on local exception: java.io.EOFException
azkaban.web.pages.HdfsBrowserServlet.init(HdfsBrowserServlet.java:76)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
~
java.io.IOException: Call to namenode/10.10.10.1:8020 failed on local exception: java.io.EOFException
org.apache.hadoop.ipc.Client.wrapException(Client.java:775)
org.apache.hadoop.ipc.Client.call(Client.java:743)
org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:220)
~
java.io.EOFException
java.io.DataInputStream.readInt(DataInputStream.java:375)
org.apache.hadoop.ipc.Client$Connection.receiveResponse(Client.java:501)
~
NameNode側には、以? のようなクラスタとクライアントのバージョンミスマッチが
発生しているログが出力される。
WARN org.apache.hadoop.ipc.Server: Incorrect
header or version mismatch from 10.10.10.10:40424 got version 3 expected
version 4
表面? ぜ Hadoopバージョンは、CDHぜ Azkabanの使用しているコミュニティ版ぜ
同一ぜ 0.20.2だが、Clouderaのバックポートで更新され互朏 性がなぜ なっている。
対? 方? は、azkabanぜ WEB-INF/lib配下の「hadoop-0.20.2-core.jar」を削除し、
CDH(/usr/lib/hadoop配下)の「hadoop-core-0.20.2-cdh3u4.jar」ぜ
「guava-r09-jarjar.jar」をWEB-INF/lib配下に置ぜ 。
上記ぜ warファイルをTomcat上に配置するパターンを想? しているが、
その場合、「servlet-api-2.5.jar」「catalina-ant.jar」あたりも
不要になるのでついでに削除する。削除すれば、以? ぜ INFOログを出力
しなぜ なる。
INFO: validateJarFile jar not loaded.
See Servlet Spec 2.3, section 9.7.2.
Offending class: javax/servlet/Servlet.class
9月 4th, 2012
手段として、いぜ つかのサイトで公開されているようぜ
mod_rewrite、mod_proxy_htmlを利用します。
圏 考:
http://d.hatena.ne.jp/matobat/20100916/1284626356
CDHの管理画面は、コミュニティ版と地 し異なる為、
いぜ つか変更を加えながら確? してみました。
準備作業は以下のようになります。
# yum install httpd-devel libxml2 libxml2-devel
# wget http://apache.webthing.com/mod_proxy_html/mod_proxy_html.tar.bz2
# bzip2 -d mod_proxy_html.tar.bz2 | tar xvf
# cd mod_proxy_html
# apxs -c -I/usr/include/libxml2 -I./ -i mod_proxy_html.c
# wget http://apache.webthing.com/svn/apache/filters/mod_xml2enc.c
# wget http://apache.webthing.com/svn/apache/filters/mod_xml2enc.h
# apxs -c -I/usr/include/libxml2 -I./ -i mod_xml2enc.c
httpd.confには、以? の設定を追加しました。
もっと効? 的な方? があるかもしれません。
# mod_rewrite
RewriteEngine On
RewriteRule ^/namenode/(.*)$ http://(MasterNode_VIP):50070/$1 [P,L,QSA]
RewriteRule ^/jobtracker/(.*)$ http://(MasterNode_VIP):50030/$1 [P,L,QSA]
RewriteRule ^/datanode/([^/]*)/(.*)$ http://$1:50075/$2 [P,L,QSA]
RewriteRule ^/tasktracker/([^/]*)/(.*)$ http://$1:50060/$2 [P,L,QSA]
Header edit Location ^http://(MasterNode_VIP):50070/(.*)$ /namenode/$1
Header edit Location ^http://(MasterNode_VIP):50030/(.*)$ /jobtracker/$1
Header edit Location ^http://([^:]*):50075/(.*)$ /datanode/$1/$2
Header edit Location ^http://([^:]*):50060/(.*)$ /tasktracker/$1/$2
# mod_proxy_html
LoadFile /usr/lib64/libxml2.so
LoadModule proxy_html_module modules/mod_proxy_html.so
LoadModule xml2enc_module modules/mod_xml2enc.so
ProxyHTMLEnable On
#ProxyHTMLLogVerbose On
ProxyHTMLURLMap ^http://(.*):50070/(.*)$ /namenode/$2 [R,x,l,e,c]
ProxyHTMLURLMap ^http://(.*):50030/(.*)$ /jobtracker/$2 [R,x,l,e,c]
ProxyHTMLURLMap ^http://(.*):50075/(.*)$ /datanode/$1/$2 [R,x,l,e,c]
ProxyHTMLURLMap ^http://(.*):50060/(.*)$ /tasktracker/$1/$2 [R,x,l,e,c]
ProxyHTMLURLMap ^http://(.*):50060$ /tasktracker/$1/ [R,x,l,e,c]
ProxyHTMLURLMap ^/static/(.*) /namenode/static/$1 [R,x,l,e,c]
ProxyHTMLURLMap ^/nn_browsedfscontent.jsp /namenode/nn_browsedfscontent.jsp [R,x,l,e,c]
ProxyHTMLURLMap ^/logs/$ logs/ [R,x,l,e,c]
ProxyHTMLURLMap ^/logs/(.*)$ $1 [R,x,l,e,c]
ProxyHTMLURLMap ^/dfshealth.jsp /namenode/dfshealth.jsp [R,x,l,e,c]
ProxyHTMLURLMap ^/jobdetails.jsp(.*)$ /jobtracker/jobdetails.jsp$1 [R,x,l,e,c]
ProxyHTMLURLMap ^/taskgraph(.*)$ /jobtracker/taskgraph$1 [R,x,l,e,c]
ProxyHTMLURLMap ^/taskstats.jsp(.*)$ /jobtracker/taskstats.jsp$1 [R,x,l,e,c]
ProxyHTMLURLMap ^/taskstatshistory.jsp(.*)$ /jobtracker/taskstatshistory.jsp$1 [R,x,l,e,c]
また、MapReduce、Shuffleのグラフ表示ぜ embedタグのリンク部分を
書き朏 える為、proxy_html.confへの追記も行っています。
ProxyHTMLLinks embed src
画面アクセス時は、/namenode/、/jobtracker/のようにアクセスします。
また、スレーブボ ードぜ IPアドレスは、リバースプロキシで名前解決できるようぜ
hostsに登録しています。
7月 25th, 2012
psshぜ sudoする場合、以? のようにコマンドオプションを指定する。
$ pssh -P -x '-tt' -h hosts.txt "sudo whoami"
-xぜ sshにコマンドオプショボ ‘-tt’を付加し、仮想端末を割り当てる。
‘-t’ではなぜ ‘-tt’にすることでローカル側での端末を持っていない場合でも
強制的に割り当てる事が可能。
または、/etc/sudoersぜ “Defaults requiretty”を
コメントアウトしぜ sudoを許可するが、パスワードが
端末に表示されてしまうので? しぜ ない。
capistrano場合は、以? の? 義を追加する。
set :default_run_options, :pty => true