使用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環境變量配置
- 右鍵單擊我的電腦 –>屬性 –>高級環境變量配置 –>環境變量 –> 單擊新建HADOOP_HOME,如下圖:
- 接着編輯環境變量
Path
,雙擊後"新建”,後者“編輯文本”,如下所示:
java環境變量配置
請自行百度
配置hadoop
- 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>
- 編輯
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>
- 編輯
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>
- 編輯
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
運行結果
- 運行cmd窗口,執行
hdfs namenode -format
; - 運行cmd窗口,切換到hadoop的sbin目錄,執行
start-all.cmd
; - 運行
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")
- 運行結果
一些報錯
A master URL must be set in your configuration錯誤
解決方案
主要參考文檔
談風月之餘談技術,歡迎關注我的微信公衆號