文档章节

小宝宝的spark之路

小小的长大
 小小的长大
发布于 2017/03/02 00:32
字数 1189
阅读 78
收藏 4

版本

| 软件 | 版本 | |:-|:-| | java | 1.8.0_45 | | scala | 2.11.4 | | Zookeeper | 3.4.9 | | Hadoop | 2.7.3 | | Spark | spark-2.1.0-bin-hadoop2.7 | | vm| centos7-x86_64|

常用命令

# 查看后台进程
jps

# hadoop namenode格式化
hadoop namenode -format

# 启动hadoop,注意要到hadoop目录下执行
./start-dfs.sh
./start-yarn.sh

# 停止hadoop,注意要到hadoop目录下执行
./stop-dfs.sh
./stop-yarn.sh

# 查看DataNode信息
hdfs dfsadmin -report 

# 在hdfs上创建目录tmp
hadoop fs -mkdir /tmp
# 提交当前目录下的1.txt到hdfs到/tmp目录下,并命令为1.txt
hadoop fs -put 1.txt /tmp/1.txt
# 在hdfs上查看/tmp目录下的文件 
hadoop fs -ls /tmp
# 在hadoop上运行jar包中的wordcount程序,并指定输入文件和输出结果位置
hadoop jar /opt/hadoop-mapreduce-examples-2.7.1.jar wordcount /tmp/1.txt /tmp/1_out
# 在hdfs上查看文件内容,(cat命令:将文件内容打印出来)
hadoop fs -cat /tmp/1_out/part-r-00000

# 启动spark,注意到spark目录下执行 
./start-master.sh 
./start-slaves.sh

# 停止spark,注意到spark目录下执行
./stop-master.sh    
./stop-slaves.sh

代码示例

wordcount

TODO 代办:以下用spark的三种方式来做代码示例

def main(args: Array[String]): Unit = {
        val conf = new SparkConf().setAppName("WordCount").setMaster("spark://master:7077")
            .set("spark.submit.deployMode","cluster") // 以集群方式运行
        val sc = new SparkContext(conf)
        // 下面的这个jar是当前项目打包的jar包,可以用maven新建项目并打包jar,这个jar地址是所在的开发环境下的地址。
        sc.addJar("~/sparkdemo/target/sparkdemo-0.1.jar")
        //the hadoop conf: core-site.xml hdfs address
        val line = sc.textFile("hdfs://master:9000/tmp/1.txt")
        val result = line.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _).collect()
        result.foreach(println)
        sc.stop()
    }


常见问题

  1. hdfs dfsadmin -report 结果livenode==0

如果出错(livenode==0)的话,一般是防火墙,ip,端口号等问题。宿主机和虚拟机需要达到互相ping通,所有端口都不能错。另外在hostname中注释掉maser 127.0.0.1。
如果livenode==0而且在http://master:8080 web管理页面中进度始终为0,那么基本可以断定为宿主机和虚拟机的网络问题,即防火墙,ip,端口号或ssh的问题,宿主机和虚拟机也要达到互相ping通的效果。

  1. file not exists

如果提交任务到spark集群上,但是找hdfs上的文件找不到,在集群中运行hadoop fs -ls 目录,检查是否真实存在,如果存在,那么就是设置的hdfs地址有误,那么可以检查一下虚拟机中hadoop中conf目录里core-site.xml中的hdfs address地址配置,另外注意端口号也不能错。

  1. hadoop集群启动正常,但是spark集群中只有一个worker

是否已经执行./start-master.sh ./start-slaves.sh,注意目录还有一个脚本为start-slave.sh,用于单独启动指定的slave,不要输错了。

  1. 讲道理应该对的操作,但是执行失败

将hadoop生成的文件,即hadoop namenode -format生成的文件删除,并停止所有spark,hadoop,重新格式化,再启动,其中格式化的目录设置在:hadoop的conf目录下的hdfs-site.xml 文件中dfs.datanode.data.dir和dfs.namenode.name.dir属性设置的目录。
或将设置中的虚拟机名字换成ip,虚拟机名字可以直接输入hostname 查看。

  1. 在webUI中查看信息时,连接都是虚拟机名字+端口号的方式,需要手动换成ip,十分不方便

可以在宿主机中/etc/hosts 中添加虚拟机名字和ip的映射。

  1. mac中端口被关闭,无法通信

/etc/pf.anchors/com.pow文件添加(换成自己需要的端口,并在最后留空行):
rdr pass on lo0 inet proto tcp from any to any port 80 -> 127.0.0.1 port 20559
在/etc/pf.conf中添加以下两句:
rdr-anchor "com.apple/*"后添加:rdr-anchor "pow"
load anchor "com.apple" from "/etc/pf.anchors/com.apple 后添加:load anchor "pow" from "/etc/pf.anchors/com.pow"
最后再留空行
使更改生效:sudo pfctl -f /etc/pf.conf
启用:sudo pfctl -e
如要关闭:sudo pfctl -d

  1. Hadoop2.x Permission denied: user=dr.who, access=READ_EXECUTE inode="/tmp"

$HADOOP_HOME/bin/hdfs dfs -chmod -R 755 /tmp #chmod要有-

  1. 如何在webUI中查看driver.host信息

查看spark 环境信息(包括dirver.host):http://虚拟机IP:4040/environment/

  1. 在idea中运行报错:cannot assign instance of scala.collection.immutable.List$SerializationProxy to field org.apache.spa

// 将该项目打包,并上传到sc中
spark.sparkContext.addJar("/home/workspaces/<project-name>/target/<project-name>.jar")

建议

  1. 当宿主机的内存不够时,可以尝试关闭虚拟机的图形化桌面。TODO 具体方法代办
  2. 建议使用centos来做虚拟机,现在总有一种centos比ubuntu稳定的感觉。
  3. 当宿主机内存不够时,可以使用docker技术来搭建集群。TODO具体方法代办

参考

hadoop集群搭建
spark on Yarn集群安装
mac中开放端口 idea 搭建spark开发环境
windows上搭建spark开发环境
在windows上使用eclipse提交spark任务到spark平台上
spark on Yarn集群搭建
spark on Yarn集群搭建
spark-shell从hdfs上读取文件运行wordcount

© 著作权归作者所有

小小的长大
粉丝 15
博文 38
码字总数 27023
作品 0
娄底
私信 提问
OSC 第 65 期高手问答 — Spark 企业级实战

OSCHINA 本期高手问答(3月23日-3月29日)我们请来了 @王家林 (王家林)为大家解答关于 Spark 开发方面的问题。 王 家林,Spark 亚太研究院院长和首席专家,当今云计算领域最火爆的技术Docke...

叶秀兰
2015/03/23
6.4K
22
【Spark亚太研究院系列丛书】Spark实战高手之路-第一章 构建Spark集群(第五步)(9)

第二步:构造分布式的Spark1.0.2集群 1,下载Scala 2.10.4,具体下载地址: http://www.scala-lang.org/download/2.10.4.html 在Ubuntu机器上Scala会帮助我们自动选择“scala-2.10.4.tgz”进行...

Spark亚太研究院
2014/11/17
233
0
Spark GraphX宝刀出鞘,图文并茂研习图计算秘笈与熟练的掌握Scala语言【大数据Spark

Spark GraphX宝刀出鞘,图文并茂研习图计算秘笈 大数据的概念与应用,正随着智能手机、平板电脑的快速流行而日渐普及,大数据中图的并行化处理一直是一个非常热门的话题。图计算正在被广泛地...

Spark亚太研究院
2014/08/29
1K
0
【Spark亚太研究院系列丛书】Spark实战高手之路-第3章Spark架构设计与编程模型第1节②

三、你为什么需要Spark; 你需要Spark的十大理由: 1,Spark是可以革命Hadoop的目前唯一替代者,能够做Hadoop做的一切事情,同时速度比Hadoop快了100倍以上: Logistic regression in Hadoo...

Spark亚太研究院
2014/12/16
423
2
大数据入门与实战-Spark上手

1 Spark简介 1.1 引言 行业正在广泛使用Hadoop来分析他们的数据集。原因是Hadoop框架基于简单的编程模型(MapReduce),它使计算解决方案具有可扩展性,灵活性,容错性和成本效益。在这里,主...

致Great
03/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 我,小小编辑,食人族酋长

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享娃娃的单曲《飘洋过海来看你》: #今日歌曲推荐# 《飘洋过海来看你》- 娃娃 手机党少年们想听歌,请使劲儿戳(这里) @宇辰OSC...

小小编辑
今天
509
10
MongoDB系列-- SpringBoot 中对 MongoDB 的 基本操作

SpringBoot 中对 MongoDB 的 基本操作 Database 库的创建 首先 在MongoDB 操作客户端 Robo 3T 中 创建数据库: 增加用户User: 创建 Collections 集合(类似mysql 中的 表): 后面我们大部分都...

TcWong
今天
22
0
spring cloud

一、从面试题入手 1.1、什么事微服务 1.2、微服务之间如何独立通讯的 1.3、springCloud和Dubbo有哪些区别 1.通信机制:DUbbo基于RPC远程过程调用;微服务cloud基于http restFUL API 1.4、spr...

榴莲黑芝麻糊
今天
11
0
Executor线程池原理与源码解读

线程池为线程生命周期的开销和资源不足问题提供了解决方 案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。 线程实现方式 Thread、Runnable、Callable //实现Runnable接口的...

小强的进阶之路
昨天
34
0
maven 环境隔离

解决问题 即 在 resource 文件夹下面 ,新增对应的资源配置文件夹,对应 开发,测试,生产的不同的配置内容 <resources> <resource> <directory>src/main/resources.${deplo......

之渊
昨天
34
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部