发布网友 发布时间:2022-04-21 18:08
共2个回答
懂视网 时间:2022-04-19 22:13
这篇教程是向PHP中文网的朋友介绍利用PS打造SPARK官网C3版镊子,只需两步就能完成,是不是很酷呀,好了,下面就为大家分享一下制作方法,感兴趣的朋友快点来学习吧大家还记得SPARK官网C3版那个镊子不~,今天2步来实现它的风骚~下面就为大家分享PS打造SPARK官网C3版镊子方法,教程很不错哦,感兴趣的朋友可以跟着教程一起来学习,希望能对大家有所帮助!
热心网友 时间:2022-04-19 19:21
安装JAVA和Hadoop
这里提供一个很好的教程,就是又好用,又好看的教程。
按照这个教程来,基本上就没有太多坑地完成安装。不过也要注意一些点。
spark从master发送命令的时候好像是按照路径寻找文件,因此你一定一定要把集群上所有的计算机的用户名都配置成一样的,比如我的都叫ubuntu,而文中的都叫hadoop,这里你要注意,如果你不跟着教程也叫hadoop的话,注意识别里面有一些命令或者路径你是不能直接复制的,而是把里面的hadoop改成你的用户名,比如在伪分布式配置core-site.xml的时候里面路径,你要改成你的实际路径才可以。
就是在按照教程配置了JAVA_HOME之后还会出现找不到JAVA_HOME的情况,应该修改hadoop/etc/hadoop/hadoop-env.sh中的JAVA_HOME的内容为绝对路径即可。
2.另外那个ssh免密登录可以不用这个,因为要搭建的是真集群的,所以这个用不着,搭好了再告诉你。这里如果不设置的话在启动hadoop的时候可能会报错
在分布式下,可能会出现这种很奇怪的情况:Live nodes只有一个(应该有俩),而且你每次刷新竟然都不一样。这样的解决方法是修改hdfs-site.xml,讲data.dir改成不一样的就可以了。
集群管理器如果是新手的话建议直接使用standalone模式(如果你不知道啥是集群管理器的话,那就更这么建议了[微笑]),也就是spark自带的集群管理器,这就意味着上边那个教程里的“启动yarn”这一节你就完全可以跳过了。
然后就没什么坑了,bulabula配置好,你就拥有的伪分布式的Hadoop了,你就已经向spark迈进了一大步了。
上面那个是伪分布式的搭建,如果是想要真的分布式的话(分布式就是多台计算机的意思啦),需要看一下这个教程
照着这个教程完全修改一波,而且是每个计算机都要做相同的修改,另外这里有个小坑(也坑了我一晚上),就是如果按照最上面那个教程里搭伪分布式的话,core-site.xml这个文件的这个属性
要从localhost:9000改成master:9000
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>1234
安装scala和Spark
搭建好了上边的来我们进行下一个教程[微笑]
1. 安装scala最好选择一个2.10.X,这样对spark支持比较好,不会出现一些幺蛾子。这有个教程,应该是可以的
2. 安装spark大概是这里面最简单的事了吧点这里下载spark。鉴于我们已经安装好了hadoop,所以我们就下载一个不需要hadoop的spark包,就是这个with user-provided Hadoop这个
我用的是1.6.0好像大家用这个的比较多,最新的已经到2.1.x了。
解压到你想安装的目录
sudo tar -zxf ~/下载/spark-1.6.0-bin-without-hadoop.tgz -C /usr/local/cd /usr/localsudo mv ./spark-1.6.0-bin-without-hadoop/ ./sparksudo chown -R hadoop:hadoop ./spark # 此处的 hadoop 为你的用户名1234
之后很重点的一步是修改spark-env.sh的内容,好像要改好多好多。。。
cd /usr/local/sparkcp ./conf/spark-env.sh.template ./conf/spark-env.shvim conf/spark-enf.sh123
这里是我的spark-env.sh的一些配置
export HADOOP_HOME=/home/ubuntu/workspace/hadoopexport HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoopexport HADOOP_HDFS_HOME=/home/ubuntu/workspace/hadoopexport SPARK_DIST_CLASSPATH=$(/home/ubuntu/workspace/hadoop/bin/hadoop classpath)export JAVA_HOME=/home/ubuntu/workspace/jdk/export SCALA_HOME=/home/ubuntu/workspace/scalaexport SPARK_MASTER_IP=192.168.1.129export SPARK_WORKER_MEMORY=1Gexport SPARK_MASTER_PORT=7077export SPARK_WORKER_CORES=1export SPARK_WORDER_INSTANCES=2export SPARK_EXECUTOR_INSTANCES=2123456789101112131415161718
属性不明白的可以打开spark-env.sh,里面前面又好多注释,讲各种属性的意思。(ps:这里有个SPARK_DIST_CLASSPATH一定要照着改对,否则会运行不起来)
这是给力星大大的教程写得很好。
3. 分布式spark部署
重点来了,当然,教程在这里
这里好像没什么坑,但是好像我记得刚开始的时候别的机器上的worker老是启动不起来,但是忘记是什么原因了,可能是免密登录没设置还是怎么的。
照着教程完成了之后,你就获得了spark的集群辣,撒花~(≧▽≦)/~
ps:这里还有个搭建standalone集群的简单介绍,Spark的Standalone模式安装部署
安装TensorflowOnSpark
这个真是说难也难,说简单真是巨简单,因为步骤github上已经写得好好的了,但是,有些坑,确实会把人坑死的。
雅虎开源的TensorflowOnSpark
1. 啥?你说全是英文看不懂,好吧我也看不懂,不过你想安装TensorflowOnSpark的话,应该拉到底点这里的wiki site
2. 由于前面说了,我们用的是自带的standalone集群管理器,所以,就点
3. 进入了教程之后,第一步复制粘贴,如果没git请按照提示安装git;
第二步不需要,因为你安装好了Spark了;第三步点进去那个instruction,或者你会发现你点不开(我就点不开。。。),你可以选择这里:tensorflow中文网。要注意的一点小坑是,在第三步的最后有一个测试
python ${TFoS_HOME}/tensorflow/tensorflow/examples/tutorials/mnist/mnist_with_summaries.py --data_dir ${TFoS_HOME}/mnist1
如果你下载的是tensorflow1.x的版本,可能会有问题运行不出来,因此我下载的是0.12.1版本,啥,你问我怎么下,就是教程里的这句
$ pip install
里的0.5.0改成0.12.1就木有问题了。
还有就是那个mnist的数据集可能由于某些原因链接不上那个网址也下载不下来(我也是酱紫的。。。),可以到我的csdn上下载。
4. 第四步就是启动spark了,其实直接启动就行了,底下那些乱七八糟的设置可以自行配置。
5. 第五步,把我坑成狗。。。需要像下面这么改,而这个cv.py其实就是改了文件输入的路径,好像本来是在hdfs上,我给改成本地的路径,噢,对了,这里的输出是输出到hdfs上,所以一定要打开hdfs啊,否则就GG了。
${SPARK_HOME}/bin/spark-submit \
--master spark://master:7077 \${TFoS_HOME}/examples/mnist/cv.py \
--output examples/mnist/csv \--format csv12345
cv.py的改动就是把mnist_data_setup.py第132,133行调用writeMNIST的方法的参数改了。具体见下图
改动后是这样
这个代码运行了之后去50070端口的hdfs查看你的文件就有了。
6. 第六步是train,就是用刚才那个转换的数据进行训练模型,这里也需要改一些东西
${SPARK_HOME}/bin/spark-submit \
--master spark://master:7077 \--py-files ${TFoS_HOME}/tfspark.zip,${TFoS_HOME}/examples/mnist/spark/mnist_dist.py \--conf spark.cores.max=4 \--conf spark.task.cpus=2 \--conf spark.executorEnv.JAVA_HOME="$JAVA_HOME" \${TFoS_HOME}/examples/mnist/spark/mnist_spark.py \
--cluster_size 2 \--images examples/mnist/csv/train/images \--labels examples/mnist/csv/train/labels \--format csv \--mode train \--model mnist_model12345678910111213
注意有几个worker这个cluster_size就至少要设置成几,spark.task.cpu的数量要大于等于worker的数量。虽然都设置好了,也看起来像跑起来了,但是会被卡住不动。这时需要进入8080端口里看看worker的strerr,我这里曾经报错说没有设置 HADOOP_HDFS_HOME,这个需要在spark-env.sh里export一下,就设置成和HADOOP_HOME一样就行了。这只好了还是动,需要改一下mnist_spark.py的第109行,把logdir=logdir –>logdir=None(另外这里119行也同样改动,否则下一步识别的时候也会卡住)
7. 第七步的时候还是照常修改一些数(主要是我没设置这些),然后改一下代码。
${SPARK_HOME}/bin/spark-submit \
--master spark://master:7077 \--py-files ${TFoS_HOME}/tfspark.zip,${TFoS_HOME}/examples/mnist/spark/mnist_dist.py \--conf spark.cores.max=4 \--conf spark.task.cpus=2 \--conf spark.executorEnv.JAVA_HOME="$JAVA_HOME" \${TFoS_HOME}/examples/mnist/spark/mnist_spark.py \
--cluster_size 2 \--images examples/mnist/csv/test/images \--labels examples/mnist/csv/test/labels \--mode inference \--format csv \--model mnist_model \--output predictions1234567891011121314
然后你愉快地发现你的hdfs上有了识别后的结果了
就像这样(强迫症地切割了下图片)
然后你打开个就看见了和网站上差不多的美妙结果。
==============2017.4.15更新==================
今天在运行程序的时候发生了莫名其妙的bug,主要症状就是task会卡在某个地方不再进行了,点进去看详细的task会发现是在某个slave上的某个task卡住了,调试无果。关机重启之后再次运行不再卡顿,原因大概是系统要求的资源没有达到,以后遇到这种情况,建议重新调小运行需要的cpu数量以及内存数量等资源配置选项再试试,实在不行就关机重启,一般都可以解决
==============2017.7.28更新====================
又踩到一个坑是,还是在识别的时候可能会卡住,可能是因为其他的worker中的namenode忘记format了。
另外还有识别的准确率很低的问题,可能是因为python找不到Jar包了,使用以下方法可以:
原来python在写hdfs文件的时候,找不到对应的jar包,在提交的时候添加如下的配置信息
--conf spark.executorEnv.LD_LIBRARY_PATH="${JAVA_HOME}/jre/lib/amd64/server" \
--conf spark.executorEnv.CLASSPATH="$($HADOOP_HOME/bin/hadoop classpath --glob):${CLASSPATH}" 12
这里致谢评论区中的“她说巷尾的樱花开了 2017-07-13 10:10发表 [回复]“ 提供解决方法
相关链接:
利用IDEA查看和修改spark源码
修改spark源码并编译部署