董西城问答整理:第三课
来源:互联网 发布:视频剪辑用什么软件 编辑:程序博客网 时间:2024/05/01 17:22
一、spark加载hadoop本地库的时候出现不能加载的情况,这是什么原因导致的呢?
我64位机器,当时hadoop启动的时候出现不能加载本地类库的这个问题是因为hadoop本身自带的本地库是32位的,编译完hadoop源码后我替换了hadoop-3.0.0本地库为64位的。
解决办法–spark加载hadoop本地库的时候出现不能加载的情况。
vim /etc/profile
export LD_LIBRARY_PATH=/data/software/hadoop-3.0/lib/native/:$LD_LIBRARY_PATH
source /etc/profile
你是用的spark on yarn吗,如果是的话,仅在客户端设置这些动态库是不行的,需要这样设置:
spark-submit –master yarn-cluster –class … –conf spark.driver.extraJavaOptions=”-Djava.library.path=/data/software/hadoop-3.0/lib/native/:$LD_LIBRARY_PATH” …
注意,每个hadoop结点上必须存在/data/software/hadoop-3.0/lib/native/
二、集群添加Federation后,fsck只能delete操作,其他move、blocks等操作失败。
http://192.168.8.17:50070/fsck?ugi=hdfs&path=路径&move=1
需要用“-D fs.defaultFS=”指定具体操作的namespace,比如:
bin/hdfs fsck -D fs.defaultFS=hdfs://namenodes /tmp/logs/ -delete
三、 spark on yarn 方式运行 spark需要启动步骤吗?是不是配置了HADOOP_CONF_DIR就直接可用了?网上看了一些关于spark on yarn方式的集群搭建,都是安装过scala和hadoop后,配置spark集群的slaves,然后再启动,worker不应该是yarn自动分配的吗?
只需要配置HADOOP_CONF_DIR,hadoop处于启动状态,就可以用。 你提到了的slaves等等是standalone模式下启动的组件,在spark on yarn中,正如你说的,worker/executor是yarn自动分配和启动的。
四、上一课课件中代码,计算pi那个,
val count = sc.parallelize(1 to n, slices).map { i =>
val x = random * 2 -‐ 1
val y = random * 2 -‐ 1
if (x*x + y*y < 1) 1 else 0
}.reduce(_ + _)
对这里的map 语法为什么要用 {} ,而不是()不理解。老师能给解释下吗?
好像换成()就不能运行了!!!
不可以的,不符合scala语法,在scala里面:
i =>
val x = random * 2 - 1
val y = random * 2 - 1
if (x*x + y*y < 1) 1 else 0
是一个partial function,必须用{}包起来,所以必须是:
{i =>
val x = random * 2 - 1
val y = random * 2 - 1
if (x*x + y*y < 1) 1 else 0
}
因为需要这么写:
map({ i =>
val x = random * 2 - 1
val y = random * 2 - 1
if (x*x + y*y < 1) 1 else 0
})
而此处,()可以省略(简写),所以可以写成:
map {i =>
val x = random * 2 - 1
val y = random * 2 - 1
if (x*x + y*y < 1) 1 else 0
}
五、董老师,再问你一个纠结我很久的问题,就是配置hue用mr可以前端打印实时日志,但是改成saprk就不能前端打印日志了,请问能指导下吗?
spark在各个task上产生日志,需要启动spark history server便可以查看日志。
六、task序列化的目的是什么?
因为task的调度是在driver端做的,执行是在executor端执行,driver需要把task通过网络传输到executor端,task是一个(java、scala)对象,对象不能通过网络传输,必须转化为字节流,再从网络传输;把一个对象转换为字节流的过程就是序列化。executor收到task序列化的字节流之后,它再把task还原成一个对象就是反序列化。
- 董西城问答整理:第三课
- 董西城问答整理:第一课
- 董西城问答整理:第二课
- [转载+整理]JSP问答...
- 网络技术知识问答整理
- 技术问答整理(1)
- 技术问答整理(2)
- 技术问答整理(3)
- 技术问答整理(4)
- 技术问答整理(5)
- 技术问答整理(6)
- 技术问答整理(7)
- 技术问答整理(8)
- 技术问答整理(9)
- 技术问答整理(10)
- 整理的MapXtreme2004应用问答
- 英文面试常见问答整理
- c语言知识点问答整理
- 如何在项目里面使用freemarker实现页面缓存(三)
- 认识GNU GPL发展Linux
- 2016android新技术之DataBinding
- 【小白笔记】KCF目标跟踪算法Matlab代码运行指南
- Can't create handler inside thread that has not called Looper.prepare()
- 董西城问答整理:第三课
- android进度条样式
- 算法-第四版-练习1.3.14解答
- SSE(Server-Send Event):服务器推送数据的新方式
- 快速学习JS的思考方法、有用
- word双栏排版,最后一页由于分节符造成最后一页是空白页,删除分节符双栏就变成了单栏
- Could not find Developer Disk Image
- 判断List为空
- ajax跨域问题