hadoop2.6.5+sqoop1.4.6環境配置とテスト(二)


まず、4台のVMがクラスタで担当する役割情報を見てみましょう.
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