■ はじめに
Windows 上に Hive(ハイヴ)環境を作りたいのだが Hadoop が前提条件としてあるので、 まずは、Windows 上に Hadoop を入れてみる
注意点
現状(2019/12/27)、2点。
1)Hadoop v3.2.1 について
Hadoop v3.2.1 は問題がある模様。 実際に「hdfs namenode -format」を行ったら同じエラーになった。 => Versionを下げて対応する => 今回は、v3.1.3(v2.9.2でも同じ方法でできた)
https://stackoverflow.com/questions/58461455/failed-to-start-namenode
I resolved the issue by installing Hadoop 2.9.1, there was namenode issue in Hadoop 3.2.1 version hdfs namenode issue in 3.2.1
https://issues.apache.org/jira/browse/HDFS-14890
2)JDK について
JDK13 でトライしたが、うまく動かなかったので JDK8 を動かす
■ 設定環境
OS : Windows10 Java : jdk-8u231-windows-x64 Hadoop : v3.1.3
■ 設定手順
前提条件
Java と 環境変数「JAVA_HOME」「PATH」が設定されていること 【設定例】 JAVA_HOME=C:\Program Files\Java\jdk1.8.0_231 PATH=;%JAVA_HOME%\bin ※補足 「Program Files」のように空白があると、はまりポイントなので なるべく空白は避けたほうがいい
【1】Hadoop の設定
[1-1] Hadoopのダウンロード
以下のサイトからHadoopをダウンロードする => 今回は、「hadoop-3.1.3.tar.gz」
https://hadoop.apache.org/releases.html
古いバージョン
http://ftp.kddilabs.jp/infosystems/apache/hadoop/common/
[1-2] Hadoopのインストール
任意の場所に解凍する => tar.gzなので、7Zipなどの解凍ソフトやtarコマンドで解凍 => 今回は、「C:\work\hadoop-3.1.3」
[1-3] 環境変数の設定
【設定例】 HADOOP_HOME="C:\work\hadoop-3.1.3" PATH=;%HADOOP_HOME%\bin;%HADOOP_HOME%\sbin
【2】winutils の設定
[2-1] winutils のダウンロード
以下のサイトからapache-hadoop-winutilsをダウンロードする => 今回は、「apache-hadoop-3.1.0-winutils-master.zip」
https://github.com/s911415/apache-hadoop-3.1.0-winutils
古いバージョン
https://github.com/steveloughran/winutils
[2-2] winutils の設定
ダウンロードしたZIPファイルを解凍し、 中にあるbinファルダを「%HADOOP_HOME%\bin」に上書きする => 今回は、「C:\work\hadoop-3.1.3\bin」 => 中に「winutils.exe」があることを確認する
【3】Hadoop のデータ格納先の準備
任意の場所に、DataNode、NameNode用のファルダを作成する。 今回は、「C:\work\hadoop-3.1.3」配下に ファルダを以下のように作成する C:\work\hadoop-3.1.3 + data + datanode + namenode
【4】Hadoop の設定ファイルの修正
%HADOOP_HOME%\etc\hadoop 配下にあるファイルを修正する (不安な場合は、ファイルを一旦バックアップをしてから行う)
C:\work\hadoop-3.1.3\etc\hadoop\hdfs-site.xml
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <!-- ここは自分の環境に合わせる --> <value>file:///C:/work/hadoop-3.1.3/data/namenode</value> </property> <property> <name>dfs.datanode.data.dir</name> <!-- ここは自分の環境に合わせる --> <value>file:///C:/work/hadoop-3.1.3/data/datanode</value> </property> </configuration>
C:\work\hadoop-3.1.3\etc\hadoop\core-site.xml
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> </configuration>
C:\work\hadoop-3.1.3\etc\hadoop\mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
C:\work\hadoop-3.1.3\etc\hadoop\yarn-site.xml
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> </configuration>
【5】hadoop-config.cmd の修正
修正前に... (修正理由)
「hadoop -help」のコマンドを行うと、以下のようなエラーになる。 原因は、JDKのパスで「Program Files」のように 空白があるためなのだが、そのためにJavaを入れ替えるのも なんなので、バッチを修正する ~~~~ 指定されたパスが見つかりません。 Error: JAVA_HOME is incorrectly set. Please update C:\work\hadoop-3.1.3\etc\hadoop\hadoop-env.cmd ~~~~ ※補足 ここで「hadoop-env.cmd」を修正すると更にはまる
C:\work\hadoop-3.1.3\libexec\hadoop-config.cmd
【修正前】 if not exist %JAVA_HOME%\bin\java.exe ( 【修正後】 if not exist "%JAVA_HOME%\bin\java.exe" ( 【修正前】 set JAVA=%JAVA_HOME%\bin\java 【修正後】 set JAVA="%JAVA_HOME%\bin\java" 【修正前】 for /f "delims=" %%A in ('%JAVA% -Xmx32m %HADOOP_JAVA_PLATFORM_OPTS% -classpath "%CLASSPATH%" org.apache.hadoop.util.PlatformName') do set JAVA_PLATFORM=%%A 【修正後】 for /f "delims=" %%A in ("'%JAVA%' -Xmx32m %HADOOP_JAVA_PLATFORM_OPTS% -classpath '%CLASSPATH%' org.apache.hadoop.util.PlatformName") do set JAVA_PLATFORM=%%A
【6】Jarの配置
修正前に... (修正理由)
「start-yarn」のコマンドを行うと、以下のようなエラーになる。 === 2019-12-27 22:18:51,305 FATAL resourcemanager.ResourceManager: Error starting ResourceManager java.lang.NoClassDefFoundError: org/apache/hadoop/yarn/server/timelineservice/collector/TimelineCollectorManager at java.base/java.lang.ClassLoader.defineClass1(Native Method) ... === 以下のサイトで対処法が載ってる
this worked: copy "hadoop-yarn-server-timelineservice-3.0.3.jar" from ~\hadoop-3.0.3\share\hadoop\yarn\timelineservice to ~\hadoop-3.0.3\share\hadoop\yarn folder. thanks –
[6-1] timelineservice.jar のコピー&ペースト
1)「C:\work\hadoop-3.1.3\share\hadoop\yarn\timelineservice」 にある「hadoop-yarn-server-timelineservice-3.1.3.jar」をコピー 2)上の階層「C:\work\hadoop-3.1.3\share\hadoop\yarn」で 「hadoop-yarn-server-timelineservice-3.1.3.jar」をペースト
【7】確認
[7-1] コマンドによる確認
コマンドプロンプト(管理者権限)を立ち上げて、 以下をコマンドを順番に行い、エラーがでないことを確認する # 1 hadoop version # 2 hadoop -help # 3 hdfs namenode -format # 4 (stop-dfsで停止) start-dfs # 5 (stop-yarnで停止) start-yarn # 6(※stopせずにそのまま) start-all
[7-2] Web UIによる確認
ブラウザで以下のURLを確認
Resource Manager
http://localhost:8088/
Node Manager
http://localhost:8042/
Name Node (Hadoop v3系の場合)
http://localhost:9870/
Name Node (Hadoop v2系の場合)
http://localhost:50070/
Data Node (Hadoop v3系の場合)
http://localhost:9864/
Data Node (Hadoop v2系の場合)
http://localhost:50075/
参考文献
https://www.datasciencecentral.com/profiles/blogs/how-to-install-and-run-hadoop-on-windows-for-beginners
https://muhammadbilalyar.github.io/blogs/How-to-install-Hadoop-on-Window-10/
https://exitcondition.com/install-hadoop-windows/
https://cwiki.apache.org/confluence/display/HADOOP2/Hadoop2OnWindows
関連記事
Apache Hive ~ 環境設定 / Windows編 ~
https://dk521123.hatenablog.com/entry/2019/12/28/021109
Apache Hive ~ HiveQL / 入門編 ~
https://dk521123.hatenablog.com/entry/2020/02/25/231235
Apache Hive ~ HiveQL / あれこれ編 ~
https://dk521123.hatenablog.com/entry/2020/03/04/225943
Apache Spark ~ 環境設定 / Windows編 ~
https://dk521123.hatenablog.com/entry/2019/09/18/214814
Apache Hadoop ~ 環境設定 / Linux編 ~
https://dk521123.hatenablog.com/entry/2020/01/01/000000
Apache Spark ~ 環境設定 / Linux編 ~
https://dk521123.hatenablog.com/entry/2019/11/01/000000