在Windows平臺安裝Hadoop&&idea調試spark程序

使用idea可以方便的編譯scala程序,只是在windows環境下,安裝hadoop不太方便。

本文蒐集了網上給的教程,整理出一些能解決問題的方法。

實驗環境

  • windows10;
  • idea2019.1.3
  • scala-sdk-2.11.0
  • jdk1.8.0_201
  • hadoop-2.7.1
  • spark2.4.3

下載安裝包

由於hadoop依賴於jdk,所以需要先安裝配置jdk,具體下載地址如下:

jdk1.8.0_201
提取碼:0vge

不知道orcle現在抽什麼風呢,是怕別的語言對java產生影響還是咋地?下載jdk要註冊,而且特別慢,太煩了。我將之前下載的存在了百度網盤,有需要的同學請自行下載。

hadoop-2.7.1
通過鏡像下載自己需要的版本,速度挺快的。

自行安裝jdk,記住安裝目錄。解壓hadoop,可能需要管理員權限。

替換文件

原版的Hadoop不支持Windows系統,我們需要修改一些配置方便在Windows上運行.
下載hadooponwindows-master.zip並解壓。
複製解壓開的bin文件和etc文件到hadoop-2.7.3文件中,並替換原有的bin和etc文件

安裝配置

配置環境hadoop,java變量

hadoop環境變量配置

  1. 右鍵單擊我的電腦 –>屬性 –>高級環境變量配置 –>環境變量 –> 單擊新建HADOOP_HOME,如下圖:
    在這裏插入圖片描述
  2. 接着編輯環境變量Path,雙擊後"新建”,後者“編輯文本”,如下所示:
  3. 在這裏插入圖片描述

java環境變量配置

請自行百度

配置hadoop

  1. 1.編輯F:\CDH-Hadoop\hadoop-2.7.1\etc\hadoop下的core-site.xml文件,將下列文本粘貼進去,並保存;
<configuration>

   <property>

       <name>fs.defaultFS</name>

       <value>hdfs://localhost:9000</value>

   </property>

</configuration>
  1. 編輯F:\CDH-Hadoop\hadoop-2.7.1\etc\hadoop目錄下的mapred-site.xml(沒有就將mapred-site.xml.template重命名爲mapred-site.xml)文件,粘貼一下內容並保存;
<configuration>

   <property>

       <name>mapreduce.framework.name</name>

       <value>yarn</value>

   </property>

</configuration>

3.編輯F:\CDH-Hadoop\hadoop-2.7.1\etc\hadoop目錄下的hdfs-site.xml文件,粘貼以下內容並保存。請自行創建data目錄,在這裏我是在HADOOP_HOME目錄下創建了此目錄;

<configuration>
 <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/F:/CDH-Hadoop/hadoop-2.7.1/data/namenode</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/F:/CDH-Hadoop/hadoop-2.7.1/data/datanode</value>
    </property>
</configuration>

  1. 編輯F:\CDH-Hadoop\hadoop-2.7.1\etc\hadoop目錄下的yarn-site.xml文件,粘貼以下內容並保存;
<configuration>

<!-- Site specific YARN configuration properties -->

   <property>

       <name>yarn.nodemanager.aux-services</name>

       <value>mapreduce_shuffle</value>

   </property>

   <property>

       <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>

       <value>org.apache.hadoop.mapred.ShuffleHandler</value>

   </property>
</configuration>
  1. 編輯F:\CDH-Hadoop\hadoop-2.7.1\etc\hadoop目錄下的hadoop-env.cmd文件,將JAVA_HOME用 @rem註釋掉,編輯爲JAVA_HOME的路徑,然後保存.
@rem set JAVA_HOME=%JAVA_HOME%
set JAVA_HOME=C:\PROGRA~1\Java\jdk1.8.0_201

**注意:**如果路徑中有Program Files,則將Program Files改爲PROGRA~1

運行結果

  1. 運行cmd窗口,執行hdfs namenode -format
  2. 運行cmd窗口,切換到hadoop的sbin目錄,執行start-all.cmd;
  3. 運行JPS,查看運行的服務;
23568 RemoteMavenS
32576 ResourceMana
35920 Jps
12420
23828
21896 NailgunRunne
33032 NodeManager
29388 NameNode
33708 DataNode
35340 Launcher

web 查看

1.資源管理GUI:http://localhost:8088/
在這裏插入圖片描述
2. 節點管理GUI:http://localhost:50070/;
在這裏插入圖片描述

在idea中測試

配置好相關環境後,輸入以下代碼:

import org.apache.spark.sql.SparkSession

object Word {
  def main(args: Array[String]): Unit = {
  
    val logFile = "file:///D:\\Users\\dell\\IdeaProjects\\scalaTest\\data\\word.txt" // Should be some file on your system
    val spark = SparkSession.builder.appName("Simple Application").getOrCreate()
    val logData = spark.read.textFile(logFile).cache()
    val numAs = logData.filter(line => line.contains("a")).count()
    val numBs = logData.filter(line => line.contains("b")).count()
    println(s"Lines with a: $numAs, Lines with b: $numBs")
//    println("hello world!")
    spark.stop()
  }
}

注意: 其中val logFile = "file:///D:\\Users\\dell\\IdeaProjects\\scalaTest\\data\\word.txt" 讀取的是本地文件系統。
讀取hdfs文件,以下三種方式等效。但是在windows環境下,好像只有第一種才能成功讀取。

("hdfs://localhost:9000/user/hadoop/word.txt")
("/user/hadoop/word.txt")
("word.txt")
  • 運行結果
    在這裏插入圖片描述

一些報錯

  1. A master URL must be set in your configuration錯誤
    解決方案

主要參考文檔

談風月之餘談技術,歡迎關注我的微信公衆號

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章