hadoop2.6.5+sqoop1.4.6環境配置とテスト(二)
まず、4台のVMがクラスタで担当する役割情報を見てみましょう.
1.得られるhadoop-2.6.5.tar.gzは/usr/local/の下に解凍し、/usr/local/hadoopソフトリンクを確立します.
2./usr/local/hadoop、/usr/local/hadoop-2.6.5所有者グループをhadoopに変更し、hadoopユーザーが使用できるようにします.
3.使いやすいようにHADOOP_を配置するHOME変数とPATH変数を変更し、/etc/profileに次のレコードを追加します.
4.hadoopのプロファイルを$HADOOP_に保存HOME/etc/hadoop/ディレクトリでは、このディレクトリのプロファイルのプロパティを変更することで環境構築を完了します:1)hadoop-envを変更します.shスクリプト、このスクリプトのJAVA_を設定するHOME変数:
2)マスターファイルを作成します.このファイルでは、どのホストがSecondaryNameノードの役割を担当するかを指定し、マスターファイルにSecondaryNameノードのホスト名を追加します.
3)slavesファイルを作成し、どのホストがDataNodeの役割を担当するかを指定し、slavesファイルにDataNodeのホスト名を追加します.
4)core-siteを修正する.xmlファイルのプロパティ値で、hdfsのurlとhdfsテンポラリファイルディレクトリを設定します.
5)hdfs-siteを修正する.xmlファイルの属性値、hdfs、NameNode、DataNode関連の属性構成を行います.
属性値説明:dfs.http.address:NameNodeのwebモニタページアドレス、デフォルトは50070ポートdfsで傍受されています.namenode.secondary.http-address:SecondaryNameNodeのwebモニタページアドレス、デフォルトでは50090ポートdfsでリスニングされています.namenode.name.dir:NameNodeメタデータがhdfsに保存する場所dfs.datanode.name.dir:DataNodeメタデータがhdfs上に保存する位置dfs.datanode.ipc.address:NameNodedfsにハートビートで情報を転送するDataNodeのipcリスニングポート.datanode.http.address:DataNodeのwebモニタページアドレス、デフォルトは50075ポートdfsで傍受する.Replication:hdfs上の各データのコピー部数
6)mapred-siteを修正する.xml、開発フレームワークはyarnアーキテクチャを採用する:
7)yarnアーキテクチャを採用する以上、yarn-siteでyarnの関連属性を配置する必要がある.xmlでは、次のように変更します.
属性値説明:yarn.resourcemanager.hostname:ResourceManagerが存在するノードホスト名yarn.nodemanager.aux-services:NodeManagerノードで拡張サービスの構成を行い、mapreduce-shuffleとして指定する場合、我々が作成したmapreduceプログラムはmap taskからreduce taskyarnに出力することができる.resourcemanager.address:NodeManagerはこのポートを介してResourceManagerと通信し、デフォルトでは8032ポート(本明細書で使用する構成でポートを変更した)yarnで傍受する.resourcemanager.scheduler.address:ResourceManagerが提供するスケジューリングサービスインタフェースアドレスであり、eclipseでmapreduce locationを構成する場合、Map/Reduce Masterの欄に記入されるアドレスでもあります.デフォルトでは8030ポートyarnで傍受する.resourcemanager.webapp.address:ResourceManagerのWebモニタページアドレス、デフォルトでは8088ポートyarnをリスニングします.resourcemanager.resource-tracker.address:NodeManagerは、このポートを使用して、ResourceManagerにタスクの実行ステータスを報告し、ResourceManagementがタスクを追跡します.デフォルトのリスニングは8031ポートです(本明細書で使用する構成ではポートが変更されています).
yarnなどの他の属性値もあります.resourcemanager.admin.addressは、管理コマンドを送信アドレス、yarnに用いる.resourcemanager.resource-tracker.client.thread-countが処理できるRPCリクエストで送信されたhandler個数など、必要に応じてこのプロファイルに追加してください.8)変更したプロファイルを各ノードにコピーする:
9)Nameノードのフォーマット操作.hdfsを初めて使用する場合は、NameNodeノードをフォーマットする必要がありますが、フォーマットパスはhdfs-siteである必要があります.xmlにはdirの最後に名前を付けたプロパティで指定されたパスの親ディレクトリが多く、ここで指定されたパスはファイルシステム上の絶対パスです.ユーザーが親ディレクトリに対して完全な制御権限を持っている場合、これらの属性で指定されたディレクトリはhdfsの起動時に自動的に作成できます.
したがって、まず/hadoopディレクトリを作成し、そのディレクトリのプライマリグループをhadoopに変更します.
さらにhadoopユーザーを使用してNameノードのフォーマット操作を行います.
注意:このコマンドの実行中に出力されたログ情報に注意してください.エラーや例外プロンプトが発生した場合は、指定したディレクトリの権限を確認してください.問題が発生する可能性があります.10)hadoopクラスタサービスの開始:Nameノードが正常にフォーマットされた後、$HADOOP_を使用できるHOME/sbin/の下のスクリプトはノードのサービスを停止し、NameNodeノードでstart/stop-yarnを使用することができる.shとstart/stop-dfs.shはyarnとHDFSを起動停止し、start/stop-allを使用することもできる.shは、すべてのノード上のサービスを停止するか、hadoop-daemonを使用する.sh指定ノード上の特定のサービスを起動停止し、ここでstart-allを使用する.shすべてのノード上のサービスを開始する:
注意:起動中に出力ログには、起動したサービスのプロセスが表示され、ログは*になります.outは特定のディレクトリに保存され、特定のサービスが起動に成功していないことが判明した場合、ログを表示してエラーを表示できます.11)運転状況を確認する.起動完了後、jpsコマンドを使用すると、関連する実行プロセスが表示されます.サービスによって、ノードによってプロセスが異なります.
これで,Hadoop完全分散環境構築が完了した.
12)試験手順の実行
提供されたmapreduceサンプルプログラムwordcountを使用して、$HADOOP_に含まれるhadoop環境が正常に動作しているかどうかを検証できます.HOME/share/hadoop/mapreduce-examples-2.6.5.JArパッケージでは、コマンドフォーマットを使用して
まず、HDFSの/test_にファイルをアップロードします.wordcountディレクトリでは、/etc/profileを使用してテストします.
出力ログを確認し、/test_でエラーが発生しなかったwordcount_outディレクトリの下で結果を表示します.
IP hadoop
10.0.1.100 hadoop-test-nn NameNode,ResourceManager
10.0.1.101 hadoop-test-snn SecondaryNameNode
10.0.1.102 hadoop-test-dn1 DataNode,NodeManager
10.0.1.103 hadoop-test-dn2 DataNode,NodeManager
1.得られるhadoop-2.6.5.tar.gzは/usr/local/の下に解凍し、/usr/local/hadoopソフトリンクを確立します.
mv hadoop-2.6.5.tar.gz /usr/local/
tar -xvf hadoop-2.6.5.tar.gz
ln -s /usr/local/hadoop-2.6.5 /usr/local/hadoop
2./usr/local/hadoop、/usr/local/hadoop-2.6.5所有者グループをhadoopに変更し、hadoopユーザーが使用できるようにします.
chown -R hadoop:hadoop /usr/local/hadoop-2.6.5
chown -R hadoop:hadoop /usr/local/hadoop
3.使いやすいようにHADOOP_を配置するHOME変数とPATH変数を変更し、/etc/profileに次のレコードを追加します.
export HADOOP_HOME=/usr/local/hadoop
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
4.hadoopのプロファイルを$HADOOP_に保存HOME/etc/hadoop/ディレクトリでは、このディレクトリのプロファイルのプロパティを変更することで環境構築を完了します:1)hadoop-envを変更します.shスクリプト、このスクリプトのJAVA_を設定するHOME変数:
# hadoop-env.sh
#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/usr/local/java/jdk1.7.0_45
2)マスターファイルを作成します.このファイルでは、どのホストがSecondaryNameノードの役割を担当するかを指定し、マスターファイルにSecondaryNameノードのホスト名を追加します.
# masters
hadoop-test-snn
3)slavesファイルを作成し、どのホストがDataNodeの役割を担当するかを指定し、slavesファイルにDataNodeのホスト名を追加します.
# slaves
hadoop-test-dn1
hadoop-test-dn2
4)core-siteを修正する.xmlファイルのプロパティ値で、hdfsのurlとhdfsテンポラリファイルディレクトリを設定します.
fs.defaultFS
hdfs://hadoop-test-nn:8020
hadoop.tmp.dir
/hadoop/dfs/tmp
5)hdfs-siteを修正する.xmlファイルの属性値、hdfs、NameNode、DataNode関連の属性構成を行います.
dfs.http.address
hadoop-test-nn:50070
dfs.namenode.secondary.http-address
hadoop-test-snn:50090
dfs.namenode.name.dir
/hadoop/dfs/name
dfs.datanode.name.dir
/hadoop/dfs/data
dfs.datanode.ipc.address
0.0.0.0:50020
dfs.datanode.http.address
0.0.0.0:50075
dfs.replication
2
属性値説明:dfs.http.address:NameNodeのwebモニタページアドレス、デフォルトは50070ポートdfsで傍受されています.namenode.secondary.http-address:SecondaryNameNodeのwebモニタページアドレス、デフォルトでは50090ポートdfsでリスニングされています.namenode.name.dir:NameNodeメタデータがhdfsに保存する場所dfs.datanode.name.dir:DataNodeメタデータがhdfs上に保存する位置dfs.datanode.ipc.address:NameNodedfsにハートビートで情報を転送するDataNodeのipcリスニングポート.datanode.http.address:DataNodeのwebモニタページアドレス、デフォルトは50075ポートdfsで傍受する.Replication:hdfs上の各データのコピー部数
6)mapred-siteを修正する.xml、開発フレームワークはyarnアーキテクチャを採用する:
mapreduce.framework.name
yarn
7)yarnアーキテクチャを採用する以上、yarn-siteでyarnの関連属性を配置する必要がある.xmlでは、次のように変更します.
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.resourcemanager.hostname
hadoop-test-nn
The address of the applications manager interface
yarn.resourcemanager.address
${yarn.resourcemanager.hostname}:8040
The address of the scheduler interface
yarn.resourcemanager.scheduler.address
${yarn.resourcemanager.hostname}:8030
The http address of the RM web application.
yarn.resourcemanager.webapp.address
${yarn.resourcemanager.hostname}:8088
yarn.resourcemanager.resource-tracker.address
${yarn.resourcemanager.hostname}:8025
属性値説明:yarn.resourcemanager.hostname:ResourceManagerが存在するノードホスト名yarn.nodemanager.aux-services:NodeManagerノードで拡張サービスの構成を行い、mapreduce-shuffleとして指定する場合、我々が作成したmapreduceプログラムはmap taskからreduce taskyarnに出力することができる.resourcemanager.address:NodeManagerはこのポートを介してResourceManagerと通信し、デフォルトでは8032ポート(本明細書で使用する構成でポートを変更した)yarnで傍受する.resourcemanager.scheduler.address:ResourceManagerが提供するスケジューリングサービスインタフェースアドレスであり、eclipseでmapreduce locationを構成する場合、Map/Reduce Masterの欄に記入されるアドレスでもあります.デフォルトでは8030ポートyarnで傍受する.resourcemanager.webapp.address:ResourceManagerのWebモニタページアドレス、デフォルトでは8088ポートyarnをリスニングします.resourcemanager.resource-tracker.address:NodeManagerは、このポートを使用して、ResourceManagerにタスクの実行ステータスを報告し、ResourceManagementがタスクを追跡します.デフォルトのリスニングは8031ポートです(本明細書で使用する構成ではポートが変更されています).
yarnなどの他の属性値もあります.resourcemanager.admin.addressは、管理コマンドを送信アドレス、yarnに用いる.resourcemanager.resource-tracker.client.thread-countが処理できるRPCリクエストで送信されたhandler個数など、必要に応じてこのプロファイルに追加してください.8)変更したプロファイルを各ノードにコピーする:
scp core-site.xml hdfs-site.xml mapred-site.xml masters slaves yarn-site.xml hadoop-test-snn:/usr/local/hadoop/etc/hadoop/
scp core-site.xml hdfs-site.xml mapred-site.xml masters slaves yarn-site.xml hadoop-test-dn1:/usr/local/hadoop/etc/hadoop/
scp core-site.xml hdfs-site.xml mapred-site.xml masters slaves yarn-site.xml hadoop-test-dn2:/usr/local/hadoop/etc/hadoop/
9)Nameノードのフォーマット操作.hdfsを初めて使用する場合は、NameNodeノードをフォーマットする必要がありますが、フォーマットパスはhdfs-siteである必要があります.xmlにはdirの最後に名前を付けたプロパティで指定されたパスの親ディレクトリが多く、ここで指定されたパスはファイルシステム上の絶対パスです.ユーザーが親ディレクトリに対して完全な制御権限を持っている場合、これらの属性で指定されたディレクトリはhdfsの起動時に自動的に作成できます.
したがって、まず/hadoopディレクトリを作成し、そのディレクトリのプライマリグループをhadoopに変更します.
mkdir /hadoop
chown -R hadoop:hadoop /hadoop
さらにhadoopユーザーを使用してNameノードのフォーマット操作を行います.
su - hadoop
$HADOOP_HOME/bin/hdfs namenode -format
注意:このコマンドの実行中に出力されたログ情報に注意してください.エラーや例外プロンプトが発生した場合は、指定したディレクトリの権限を確認してください.問題が発生する可能性があります.10)hadoopクラスタサービスの開始:Nameノードが正常にフォーマットされた後、$HADOOP_を使用できるHOME/sbin/の下のスクリプトはノードのサービスを停止し、NameNodeノードでstart/stop-yarnを使用することができる.shとstart/stop-dfs.shはyarnとHDFSを起動停止し、start/stop-allを使用することもできる.shは、すべてのノード上のサービスを停止するか、hadoop-daemonを使用する.sh指定ノード上の特定のサービスを起動停止し、ここでstart-allを使用する.shすべてのノード上のサービスを開始する:
start-all.sh
注意:起動中に出力ログには、起動したサービスのプロセスが表示され、ログは*になります.outは特定のディレクトリに保存され、特定のサービスが起動に成功していないことが判明した場合、ログを表示してエラーを表示できます.11)運転状況を確認する.起動完了後、jpsコマンドを使用すると、関連する実行プロセスが表示されます.サービスによって、ノードによってプロセスが異なります.
NameNode 10.0.1.100:
[hadoop@hadoop-test-nn ~]$ jps
4226 NameNode
4487 ResourceManager
9796 Jps
10.0.1.101 SecondaryNameNode:
[hadoop@hadoop-test-snn ~]$ jps
4890 Jps
31518 SecondaryNameNode
10.0.1.102 DataNode:
[hadoop@hadoop-test-dn1 ~]$ jps
31421 DataNode
2888 Jps
31532 NodeManager
10.0.1.103 DataNode:
[hadoop@hadoop-test-dn2 ~]$ jps
29786 DataNode
29896 NodeManager
1164 Jps
これで,Hadoop完全分散環境構築が完了した.
12)試験手順の実行
提供されたmapreduceサンプルプログラムwordcountを使用して、$HADOOP_に含まれるhadoop環境が正常に動作しているかどうかを検証できます.HOME/share/hadoop/mapreduce-examples-2.6.5.JArパッケージでは、コマンドフォーマットを使用して
hadoop jar hadoop-mapreduce-examples-2.6.5.jar wordcount [...]
まず、HDFSの/test_にファイルをアップロードします.wordcountディレクトリでは、/etc/profileを使用してテストします.
# hdfs /test_wordcount
[hadoop@hadoop-test-nn mapreduce]$ hdfs dfs -mkdir /test_wordcount
# /etc/profile /test_wordcount
[hadoop@hadoop-test-nn mapreduce]$ hdfs dfs -put /etc/profile /test_wordcount
[hadoop@hadoop-test-nn mapreduce]$ hdfs dfs -ls /test_wordcount
Found 1 items
-rw-r--r-- 2 hadoop supergroup 2064 2017-08-06 21:28 /test_wordcount/profile
# wordcount
[hadoop@hadoop-test-nn mapreduce]$ hadoop jar hadoop-mapreduce-examples-2.6.5.jar wordcount /test_wordcount/profile /test_wordcount_out
17/08/06 21:30:11 INFO client.RMProxy: Connecting to ResourceManager at hadoop-test-nn/10.0.1.100:8040
17/08/06 21:30:13 INFO input.FileInputFormat: Total input paths to process : 1
17/08/06 21:30:13 INFO mapreduce.JobSubmitter: number of splits:1
17/08/06 21:30:13 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1501950606475_0001
17/08/06 21:30:14 INFO impl.YarnClientImpl: Submitted application application_1501950606475_0001
17/08/06 21:30:14 INFO mapreduce.Job: The url to track the job: http://hadoop-test-nn:8088/proxy/application_1501950606475_0001/
17/08/06 21:30:14 INFO mapreduce.Job: Running job: job_1501950606475_0001
17/08/06 21:30:29 INFO mapreduce.Job: Job job_1501950606475_0001 running in uber mode : false
17/08/06 21:30:29 INFO mapreduce.Job: map 0% reduce 0%
17/08/06 21:30:39 INFO mapreduce.Job: map 100% reduce 0%
17/08/06 21:30:49 INFO mapreduce.Job: map 100% reduce 100%
17/08/06 21:30:50 INFO mapreduce.Job: Job job_1501950606475_0001 completed successfully
17/08/06 21:30:51 INFO mapreduce.Job: Counters: 49
File System Counters
FILE: Number of bytes read=2320
FILE: Number of bytes written=219547
FILE: Number of read operations=0
FILE: Number of large read operations=0
FILE: Number of write operations=0
HDFS: Number of bytes read=2178
HDFS: Number of bytes written=1671
HDFS: Number of read operations=6
HDFS: Number of large read operations=0
HDFS: Number of write operations=2
Job Counters
Launched map tasks=1
Launched reduce tasks=1
Data-local map tasks=1
Total time spent by all maps in occupied slots (ms)=7536
Total time spent by all reduces in occupied slots (ms)=8136
Total time spent by all map tasks (ms)=7536
Total time spent by all reduce tasks (ms)=8136
Total vcore-milliseconds taken by all map tasks=7536
Total vcore-milliseconds taken by all reduce tasks=8136
Total megabyte-milliseconds taken by all map tasks=7716864
Total megabyte-milliseconds taken by all reduce tasks=8331264
Map-Reduce Framework
Map input records=84
Map output records=268
Map output bytes=2880
Map output materialized bytes=2320
Input split bytes=114
Combine input records=268
Combine output records=161
Reduce input groups=161
Reduce shuffle bytes=2320
Reduce input records=161
Reduce output records=161
Spilled Records=322
Shuffled Maps =1
Failed Shuffles=0
Merged Map outputs=1
GC time elapsed (ms)=186
CPU time spent (ms)=1850
Physical memory (bytes) snapshot=310579200
Virtual memory (bytes) snapshot=1682685952
Total committed heap usage (bytes)=164630528
Shuffle Errors
BAD_ID=0
CONNECTION=0
IO_ERROR=0
WRONG_LENGTH=0
WRONG_MAP=0
WRONG_REDUCE=0
File Input Format Counters
Bytes Read=2064
File Output Format Counters
Bytes Written=1671
出力ログを確認し、/test_でエラーが発生しなかったwordcount_outディレクトリの下で結果を表示します.
[hadoop@hadoop-test-nn mapreduce]$ hdfs dfs -ls /test_wordcount_out
Found 2 items
-rw-r--r-- 2 hadoop supergroup 0 2017-08-06 21:30 /test_wordcount_out/_SUCCESS
-rw-r--r-- 2 hadoop supergroup 1671 2017-08-06 21:30 /test_wordcount_out/part-r-00000
[hadoop@hadoop-test-nn mapreduce]$ hdfs dfs -cat /test_wordcount_out/part-r-00000