关于这个spark的环境搭建了好久,踩了一堆坑,今天
环境: WIN7笔记本
spark 集群(4个虚拟机搭建的)
Intelij IDEA15
scala-2.10.4
java-1.7.0
版本问题:
个人选择的是hadoop2.6.0 spark1.5.0 scala2.10.4 jdk1.7.0
接下来就是用Intelij IDEA来远程连接spark集群,这样就可以方便的在本机上进行调试。
首先需要注意windows可以设置hosts,在 C:\Windows\System32\drivers\etc 有个hosts,把以下映射地址填进去, 这样能省去不少事
172.21.75.102 spark1
172.21.75.194 spark2
172.21.75.122 spark3
172.21.75.95 spark4
1)首先在个人WIN7本上搭好java,scala环境,并配置好环境变量,安装好Intelij IDEA,并安装好scala插件。
2)新建Scala项目,选择Scala:
3)分别引入 java 与 Scala SDK,并对项目命名,这里一会我们运行SparkPi的程序,名字可以随意
4)进入主界面,双击src,或者File->Project Structer,进入程序配置界面
5)点击library里“+”,点击java,添加spark-1.5.0-hadoop-2.6.0的jar包
6)点击library里“+”,点击Scala SDK 添加Scala SDK
7)以上步骤点击OK退出,在src新建 SparkPi.scala 的scala object文件
8)写代码之前,先进行一个jar包设置
9) 这里的路径一定要设置好,为jar包的输出路径,一会要写到程序里,使得spark集群的查找
10)选中这里的Build on make,程序就会编译后自动打包
11)注意以上的路径,这个路径就是提交给spark的jar包
.setJars(List("F:\\jar_package\\job\\SparkPi.jar"))
12)复制如下代码到SparkPi.scala
13)现在大功告成,设置Run 的Edit Configuration,点击+,Application,设置MainClass,点击OK!
14)点击Run即可运行程序了,程序会在刚才的路径生成对应的jar,然后会启动spark集群,去运行该jar文件,以下为执行结果:
看着真是有点小激动!
15)去172.21.75.102:8080查看运行的痕迹
16)搭建调试环境过程中的错误
- null\bin\winutils.exe,这个错误很简单,是因为本win7压根就没装hadoop系统,解决办法是从集群上复制一份过来,放到F盘,并且配置好环境变量
HADOOP_HOME=F:\hadoop-2.6.0 Path=%HADOOP_HOME%\bin
接下来下载对应的版本的winutils放到 F:\hadoop-2.6.0\bin 文件夹下,应该就解决了
- SparkUncaughtExceptionHandler: Uncaught exception in thread Thread
这个错误好坑,查了好久的资料,才解决,原来是搭建集群时候spark-env.sh设置的问题
将SPARK_MASTER_IP=spark1改成
SPARK_MASTER_IP=172.21.75.102即可解决,改了之后再网页里也能查出来
- Exception in thread "main" java.lang.IllegalArgumentException: java.net.UnknownHostException : spark1
以上是当需要操作HDFS时候,写上HDFS地址 hdfs://spark1:9000,会出现,后来发现原来windows也可以设置hosts,在 C:\Windows\System32\drivers\etc 有个hosts,把需要映射的地址填进去即可
172.21.75.102 spark1
- FAILED: RuntimeException org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security.AccessControlException: Permission denied: user=dbs, access=WRITE, inode="/opt/hadoop-1.0.1":hadoop:supergroup:drwxr-xr-x
解决办法:
在 hdfs-site.xml 总添加参数:
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
改完后记得重启HDFS