hadoopがpigを使用してデータ分析中に発生した問題(10020番ポートの問題、接続拒否)
2806 ワード
hadoopアプリケーションのmapとreduceを作成するのは難しくありませんが、フレームワーク全体の作成を完全に制御するには、Java言語に非常に熟知する必要があります.私はずっとLinuxの下でCのプログラミングをしている人は、もっと私に合った方法を探すしかありません.Apacheプロジェクトの下にはhadoopを簡単に操作できるMapReduceのツールがあります.これがpigです.MapReduceに基づいてより簡単なプロセス言語抽象を作成し、Hadoopアプリケーションに構造化されたクエリー言語(SQL)に近いインタフェースを提供します.個別のMapReduceアプリケーションを作成する必要はありません.Pig Latin言語でスクリプトを作成し、クラスタ内でスクリプトを自動的に並列処理して配布できます.
Pigで使用される2つのモード:
1つ目はLocal(ローカル)モードで、HadoopまたはHadoop分散ファイルシステム(HDFS)に依存する必要はありません.このモードでは、すべての操作がローカルファイルシステムコンテキストの単一Java仮想マシン(JVM)上で実行されます.もう1つのモードは、Hadoopファイルシステムとクラスタを使用したMapReduceモードです.私は主にhadoopクラスタを利用してデータを分析しているので、MapReduceモードだけに注目しています.
また,pigとhiveのインストールとその注意点については,前述したブログで述べた.
マスターノードにpigをインストールした後、端末は次のように入力します.
または
localモードで起動する場合は、次のように入力します.
次にデータをテストして、Linuxシステムの下でpasswdの情報を統計して、先にファイルをhdfsにコピーします
mapreduce.jobhistory.address.hadoopプロファイルmapred-siteを表示します.xmlにはすでにこの定義があります.
pigを起動して上記の手順を再実行すると、正常に実行されます.実行を容易にするためにpigコマンドをスクリプトに入れることができます.passwdと名付けられます.pig:
Pigで使用される2つのモード:
1つ目はLocal(ローカル)モードで、HadoopまたはHadoop分散ファイルシステム(HDFS)に依存する必要はありません.このモードでは、すべての操作がローカルファイルシステムコンテキストの単一Java仮想マシン(JVM)上で実行されます.もう1つのモードは、Hadoopファイルシステムとクラスタを使用したMapReduceモードです.私は主にhadoopクラスタを利用してデータを分析しているので、MapReduceモードだけに注目しています.
また,pigとhiveのインストールとその注意点については,前述したブログで述べた.
マスターノードにpigをインストールした後、端末は次のように入力します.
pig
または
pig -x mapreduce
localモードで起動する場合は、次のように入力します.
pig -x local
次にデータをテストして、Linuxシステムの下でpasswdの情報を統計して、先にファイルをhdfsにコピーします
grunt> cd hdfs:///
grunt> cd /test
grunt> copyFromLocal /etc/passwd passwd
Pig文を実行します.grunt> passwd = LOAD '/test/passwd' USING PigStorage(':') AS (user:chararray,passwd:chararray, uid:int, gid:int, userinfo:chararray, home:chararray,shell:chararray);
grunt> DUMP passwd
で次の問題が発生しました.[main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1066: Unable to open iterator for alias passwd. Backend error : javadoop/192.168.0.2 to master.hadoop:10020 failed on connection exception: java.net.ConnectException: ; For more deta
Details at logfile: /usr/local/pig/pig_1433189043690.log
エラーメッセージを表示すると、10020番ポートが開いていない可能性があります.次のコマンドで表示します.lsof | grep 10020
はやはり開いていないで、それからこのブログhadoopの常用ポートと定義方法を見て、この10020番ポートがmapreduce.jobhistory.address.hadoopプロファイルmapred-siteを表示します.xmlにはすでにこの定義があります.
<property>
<name>mapreduce.jobhistory.address</name>
<value>master.hadoop:10020</value>
</property>
では、サービスはまだ起きていません.hadoopクラスタを起動したときにstart-allが可能です.shにはこれが含まれていませんか?では、手動で起動します.mr-jobhistory-daemon.sh start historyserver
pigを起動して上記の手順を再実行すると、正常に実行されます.実行を容易にするためにpigコマンドをスクリプトに入れることができます.passwdと名付けられます.pig:
passwd = LOAD '/test/passwd' USING PigStorage(':') AS (user:chararray,passwd:chararray, uid:int, gid:int, userinfo:chararray, home:chararray,shell:chararray);
grp_shell = GROUP passwd BY shell;
counts = FOREACH grp_shell GENERATE group, COUNT(passwd);
DUMP counts;
その後、端末に次のように入力します.pig passwd.pig
で完了します.