レジストの設定を変更することより、マルチユーザアクセスできるようになります。
方法
スタット⇒regedit入力
レジストパスのHKEY_LOCAL_MACHINE \ SYSTEM \ CURRENTCONTROLSET \control\ TerminalServer\fSingleSessionPerUser
fSingleSessionPerUser存在しない場合、新規「fSingleSessionPerUser」を作成します。
fSingleSessionPerUserの値が1の場合、単ユーザです、0はマルチユーザです。
Monthly Archives: January 2014
Hadoop-2.2.10 Single nodeのセットアップ
- プライマリNameNode
- セカンダリNameNode
- DataNode
- ResourceManager
- NodeManager
- (MapReduce)HistoryServer
目次
共通
◇アカウントの権限
sudo権限を持つアカウントで下記の手順で実行します。環境変数を保つするために、実行アカウントの.bashrcに下記のaliasを追加します。
◇必要の4つアカウントを作成します
hadoop以外のアカウントでは、アカウントを作成するとき、Homeディレクトリを作成しなくてもOKです。
- hadoopユーザとグループの作成
- 分散ファイルシステムサービス管理ユーザ:hdfs
- リソース管理とノード管理サービスユーザ:yarn
- MapReduceジョブ履歴管理サービス:mapred
sudo adduser hdfs
sudo usermod -G hadoop hdfs
sudo adduser mapred
sudo usermod -G hadoop mapred
sudo adduser yarn
sudo usermod -G hadoop yarn
◇作業ディレクトリを作成します
◇Java JDKをインストール
CentOSの場合、Java OpenJDKがすでにインストールされている可能性があります。java -versionで確認できます。この文書ではOracleのjdk-7u45-linux-x64.gzを/tmp/workにダウンロードしてインストールします。
ダウンロード後解凍してインストします。
tar xvzf /tmp/work/jdk-7u45-linux-x64.gz
ln -s jdk1.7.0_45 jdk
◇hadoop-2.2.0をダウロードして「/」に解凍します
wget http://ftp.tsukuba.wide.ad.jp/software/apache/hadoop/common/stable2/hadoop-2.2.0.tar.gz
cd /
tar xvzf /tmp/hadoop-2.2.0.tar.gz
chown -R root:hadoop hadoop-2.2.0
ln -s /hadoop-2.2.0 hadoop
◇環境変数の設定
各アカウントに環境変数をそれぞれ追加するより、/etc/profileに追加すると便利です。
export JAVA_HOME=/usr/local/jdk
#hadoop environment
export HADOOP_PREFIX=/hadoop
export HADOOP_MAPRED_HOME=$HADOOP_PREFIX
export HADOOP_COMMON_HOME=$HADOOP_PREFIX
export HADOOP_HDFS_HOME=$HADOOP_PREFIX
export HADOOP_YARN_HOME=$HADOOP_PREFIX
export YARN_HOME=$HADOOP_MAPRED_HOME
export HADOOP_CONF_DIR=$HADOOP_PREFIX/etc/hadoop
export YARN_CONF_DIR=$HADOOP_CONF_DIR
PATH=$JAVA_HOME/bin:$HADOOP_PREFIX/bin:$HADOOP_PREFIX/sbin:$PATH
◇${HADOOP_PREFIX}/etc/hadoop/hadoop-env.shファイルに下記の変数を設定します
export HADOOP_LOG_DIR=${HADOOP_PREFIX}/logs/$USER
export HADOOP_PID_DIR=${HADOOP_PREFIX}/tmp
◇データ、コントロール情報を格納するディレクトリ領域を用意します
mkdir /hadoop-workspace22/storage
mkdir /hadoop-workspace22/logs
mkdir /hadoop-workspace22/tmp
mkdir /hadoop-workspace22/run
chown -R hadoop:hadoop /hadoop-workspace22
chmod -R ug+w /hadoop-workspace22
◇core-site.xmlファイルを下記のように設定します
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000/</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/hadoop-workspace22/tmp/${user.name}</value> </property> <property> <name>hadoop.native.lib</name> <value>true</value> <description>Should native hadoop libraries, if present, be used.</description> </property> <property> <name>hadoop.logfile.size</name> <value>10000000</value> <description>The max size of each log file</description> </property> <property> <name>hadoop.logfile.count</name> <value>15</value> <description>The max number of log files</description> </property> </configuration>
HDFS
◇hadoop-env.shに変数を追加、設定します。
${HADOOP_PREFIX}/etc/hadoop/hadoop-env.shにデータ格納領域の境変数を追加します。
export HADOOP_LOG_DIR=${HADOOP-WORKSPACE}/logs/$USER
export HADOOP_PID_DIR=${HADOOP-WORKSPACE}/run
◇hdfs-site.xmlファイルを下記のように設定します。
<configuration> <property> <name>dfs.namenode.name.dir</name> <value>file:///hadoop-workspace22/storage/${user.name}/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:///hadoop-workspace22/storage/${user.name}/dfs/data</value> </property> <property> <name>dfs.namenode.checkpoint.dir</name> <value>file:///hadoop-workspace22/storage/${user.name}/dfs/namesecondary</value> </property> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
◇HDFS領域をフォーマットします
◇HDFSデーモンを起動します。
sudo -u hdfs ${HADOOP_PREFIX}/sbin/hadoop-daemon.sh start secondarynamenode
sudo -u hdfs ${HADOOP_PREFIX}/sbin/hadoop-daemon.sh start datanode
◇HDFS上のディレクトリを作成し、アクセス権限を与えます
sudo -u hdfs ${HADOOP_PREFIX}/bin/hadoop fs -chmod 755 /
sudo -u hdfs ${HADOOP_PREFIX}/bin/hadoop fs -mkdir /tmp
sudo -u hdfs ${HADOOP_PREFIX}/bin/hadoop fs -chown hdfs:hadoop /tmp
sudo -u hdfs ${HADOOP_PREFIX}/bin/hadoop fs -chmod 1777 /tmp
sudo -u hdfs ${HADOOP_PREFIX}/bin/hadoop fs -mkdir /user
sudo -u hdfs ${HADOOP_PREFIX}/bin/hadoop fs -chown hdfs:hadoop /user
sudo -u hdfs ${HADOOP_PREFIX}/bin/hadoop fs -chmod ug+w /user
◇Web UIのアクセスURLは以下の通りです。
http://localhost:50090/ #Secondary NameNode
YARN
◇yarn-env.shに下記の環境変数を追加する
export YARN_LOG_DIR=${HADOOP_WORKSPACE}/logs
export YARN_PID_DIR=${HADOOP_WORKSPACE}/run
◇yarn-site.xmlファイルに下記の設定を追加する
<configuration> <!-- Site specific YARN configuration properties --> <property> <name>yarn.resourcemanager.scheduler.class</name> <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value> <description>In case you do not want to use the default scheduler</description> </property> <property> <name>yarn.nodemanager.local-dirs</name> <value>/hadoop-workspace22/${user.name}/nm/local</value> <description> the local directories used by the nodemanager (default: /tmp/nm-local-dir) </description> </property> <!-- <property> <name>yarn.nodemanager.address</name> <value>0.0.0.0:0</value> <description>the nodemanagers bind to this port</description> </property> --> <property> <name>yarn.nodemanager.resource.memory-mb</name> <value>8192</value> <description> the amount of memory on the NodeManager in GB (default: 8192) </description> </property> <property> <name>yarn.nodemanager.remote-app-log-dir</name> <value>/hadoop-workspace22/logs/${user.name}/nm</value> <description> directory on hdfs where the application logs are moved to (default: /tmp/logs) </description> </property> <property> <name>yarn.nodemanager.log-dirs</name> <value>/hadoop-workspace22/logs/${user.name}/nm</value> <description> the directories used by Nodemanagers as log directories (default: /tmp/logs) </description> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> <description>shuffle service that needs to be set for Map Reduce to run</description> </property> <property> <name>mapreduce.job.hdfs-servers</name> <value>${fs.defaultFS}</value> <!-- yarn-default.xml deprecated key: fs.default.name --> </property> </configuration>
◇ローカルファイルシステムのディレクトリを作成して権限を付与します
sudo mkdir -p /hadoop-workspace22/logs/yarn/nm
sudo mkdir -p /hadoop-workspace22/logs/yarn/nm/local
sudo chown -R yarn:hadoop /hadoop-workspace22/logs/yarn
sudo chmod ug+w /hadoop-workspace22/logs/yarn
◇HDFS上に必要なディレクトリを作成します
sudo -u hdfs ${HADOOP_PREFIX}/bin/hadoop fs -mkdir /hadoop-workspace22/logs
sudo -u hdfs ${HADOOP_PREFIX}/bin/hadoop fs -mkdir /hadoop-workspace22/logs/yarn
sudo -u hdfs ${HADOOP_PREFIX}/bin/hadoop fs -mkdir /hadoop-workspace22/logs/yarn/nm
sudo -u hdfs ${HADOOP_PREFIX}/bin/hadoop fs -chown yarn:hadoop /hadoop-workspace22/logs/yarn/nm
sudo -u hdfs ${HADOOP_PREFIX}/bin/hadoop fs -chmod 1777 /hadoop-workspace22/logs/yarn/nm
◇yarnサービスを起動します。
sudo -u yarn ${HADOOP_PREFIX}/sbin/yarn-daemon.sh start nodemanager
◇Web UIのアクセスURLは以下の通りです
http://localhost:8042/ # NodeManager
MapReduce
◇mapred-env.shに下記の環境変数を設定する
export HADOOP_MAPRED_PID_DIR=$HADOOP_WORKSPACE/run
export HADOOP_MAPRED_LOG_DIR=$HADOOP_WORKSPACE/logs/$USER
◇mapred-site.xmlを設定する
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> <description>The runtime framework for executing MapReduce jobs. Can be one of local, classic or yarn. (default: local) </description> </property> <property> <name>mapreduce.cluster.local.dir</name> <value>/hadoop-workspace22/mapred/local</value> <description>The local directory where MapReduce stores intermediate data files. May be a comma-separated list of directories on different devices in order to spread disk i/o. Directories that do not exist are ignored. (default: ${hadoop.tmp.dir}/mapred/local on LOCAL) </description> </property> <property> <name>mapreduce.jobtracker.system.dir</name> <value>/hadoop-workspace22/mapred/system</value> <description>The directory where MapReduce stores control files. (default: ${hadoop.tmp.dir}/mapred/system on HDFS) </description> </property> <property> <name>yarn.app.mapreduce.am.staging-dir</name> <value>/user</value> </property> <!-- <property> <name>mapreduce.jobtracker.staging.root.dir</name> <value>/user</value> <description>The root of the staging area for users' job files In practice, this should be the directory where users' home directories are located (usually /user) (default: ${hadoop.tmp.dir}/mapred/staging on HDFS) </description> </property> --> <property> <name>mapreduce.cluster.temp.dir</name> <value>/hadoop-workspace22/mapred/temp</value> <description>A shared directory for temporary files. (default: ${hadoop.tmp.dir}/mapred/temp on LOCAL) </description> </property> <property> <name>mapreduce.jobhistory.intermediate-done-dir</name> <value>/hadoop-workspace22/mapred/history/intermediate_done</value> </property> <property> <name>mapreduce.jobhistory.done-dir</name> <value>/hadoop-workspace22/mapred/history/done</value> </property> </configuration>
◇HDFS上に必要なディレクトリを追加します
sudo -u hdfs ${HADOOP_PREFIX}/bin/hadoop fs -chown -R mapred:hadoop /hadoop-workspace22/mapred
sudo -u hdfs ${HADOOP_PREFIX}/bin/hadoop fs -chmod -R ug+wr /hadoop-workspace22/mapred
◇履歴サーバーを起動します
起動失敗した場合、/hadoop-workspace22/logs/mapredにあるログファイルを確認してHDFS上のディレクトリに書き込み権限があるかどうか再確認してください
◇履歴サーバWeb UIのアクセスURLは以下の通りです
http://localhost:19888/
テスト、確認
◇テストユーザ作成
sudo usermod -a -G hadoop htest
◇HDFS上のユーザジョブ格納ディレクトリ作成
sudo -u hdfs ${HADOOP_PREFIX}/bin/hadoop fs -chown htest:htest /user/aidabo
◇ジョブ実行前のプロセス
17440 NameNode
17516 SecondaryNameNode
17572 DataNode
18950 ResourceManager
19183 NodeManager
29116 JobHistoryServer
◇MapReduceテスト
sudo -u htest ${HADOOP_PREFIX}/bin/hadoop jar /hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar randomwriter out
◇ジョブ起動中のプロセス
17440 NameNode
17516 SecondaryNameNode
17572 DataNode
18950 ResourceManager
19183 NodeManager
29116 JobHistoryServer
34499 RunJar
34705 MRAppMaster
35062 YarnChild
35072 YarnChild
35074 YarnChild
35079 YarnChild
35080 YarnChild
◇ジョブ終了後のプロセス
17440 NameNode
17516 SecondaryNameNode
17572 DataNode
18950 ResourceManager
19183 NodeManager
29116 JobHistoryServer
◇ジョブ実行終了後、historyserverから確認します。
http://localhost:19888/jobhistory