数据开发笔试面试问题集锦

  1. 逻辑回归如何解决过拟合问题?
    过拟合大部分原因是由于特征过多导致的,我们可以使用以下两种方法来解决过拟合的问题。
  • 减少特征的数量:手工挑选、相关性分析、聚类、主成分分析。
  • 正则化:可以降低某些特征的权值。
  1. Cassandra、SequoiaDB、MongoDB、HBase性能对比
    测试规则:YCSB 测试规则(YCSB是Yahoo提供的NoSQL数据库性能测试工具)
    表设置:表模拟的是日志数据,字段数为10个,每条记录100字节,副本设置为3,总共30G数据。一致性设为最终一致性级别(不保证任何时刻各个节点上的数据一致,但是一段时间后数据会一致)。
    服务器配置:内存64G,操作系统麒麟系统,jdk1.7。
    初始设置:硬件高可用性,
    测试指标如下:
  • 单条记录导入(每台服务器24线程):S:8万ops/second;M:1万ops/second;H:5.6万ops/second;C:5.5万ops/second;
  • 批量记录导入(每台服务器08线程):S:19万ops/second;M:1万ops/second;H:5.6万ops/second;C:和单条插入性能差不多;
  • 单纯查询(每台服务器36线程,后同):S:4万ops/second;M:8万ops/second;H:1万ops/second;C:4万ops/second;
  • 查询导入平衡(50%导入,50%查询):S:1.9万ops/second;M:1万ops/second;H:0.8万ops/second;C:1万ops/second;
  • 更新为主(95%更新,5%查询):S:5.5万ops/second;M:0.8万ops/second;H:1.2万ops/second;C:3.5万ops/second;
  • 查询为主(95%查询,5%更新):S:4.5万ops/second;M:2.8万ops/second;H:1万ops/second;C:4万ops/second;
  • 查询最新(95%查询,5%导入):S:4万ops/second;M:2.5万ops/second;H:0.5万ops/second;C:2.5万ops/second;
    Cassandra以及HBase相比MongoDB在写性能上比较占优势,在读方面Cassandra介于MongoDB和HBase之间。更新方面Cassandra性能最佳。
  1. Mysql和mongodb索引原理(说一下B+tree和B-tree区别,为什么为什么一个用b+一个用b-,为什么索引用btree不用平衡二叉树)?Cassandra的索引实现原理?(参考:http://blog.codinglabs.org/articles/theory-of-mysql-index.html
    首先需要明白的是B+Tree和B-Tree有何不同:B+Tree非叶子节点没有数据指针,而B-Tree有数据指针,这样的一个小差别就使B+Tree的一个非叶子节点(通常占用一页)可以存储更多的key值,同时由于程序的局部性原理,下一次需要读的数据可能就已经在缓存当中,因此相比B-Tree更能够减少IO开销。
    平衡二叉树(AVL树):由于每个节点只能拥有两颗子树,因此树的深度相比BTree更深,导致IO开销更大。
    Cassandra的一级索引机制是采用Bloom Filter(参考:http://blog.csdn.net/jiaomeng/article/details/1495500 ):其原理是通过k个哈希函数将key值映射为k个值,之后将长度为m的0-1数组中下标为这k个值的位置置为1。当判断一个key是否在这个数组中时,只要判断数组下标为这k个哈希函数计算出的hash值的位置是否全为1即可;优点是所消耗的空间极少,查询效率极高;缺点是有可能将一个不属于该数组的key值错报成属于该数组。
    红黑树:自平衡二叉查找树。其性质如下(参考:https://zh.wikipedia.org/wiki/%E7%BA%A2%E9%BB%91%E6%A0%91 ):
    1) 根节点是黑色;
    2) 所有节点都是红色或黑色;
    3) 每个红色节点必须有两个黑色子节点;
    4) 所有叶子节点都是黑色;
    5) 一个节点到其所有叶子节点的简单路径所包含的黑色节点个数相同。

  2. Spark看过哪些源码?
    主要就是Spark 内核中的源码,具体有RDD源码,DAG图的生成过程,任务调度、还有缓存和checkpoint机制的源码。
    RDD 五要素:输入、计算函数、分区器、依赖关系、分区最优的计算节点。
    DAG图的生成过程:

  3. Solr中使用了倒排索引,什么是倒排索引?
    倒排索引是全文索引所使用的一种数据结构,定义为:某个单词在哪个文档的标记。eg:


    倒排索引
  4. 怎么判断一个字符串为空?
    字符串为空有两种情况:第一种是字符串长度为0,第二种是字符串为空指针。

  5. HashMap如何遍历?
    直接调用方法entrySet(),该方法返回一个Set,Set中的元素类型为Entry<...>,得到Set之后使用泛型遍历。

  6. finally语句块什么时候不会执行?参考:https://www.ibm.com/developerworks/cn/java/j-lo-finally/

  • try块还没有执行,那么finally语句块也不会执行。这种情况可能发生在try块上面有语句终止了程序的运行。
  • try块执行了,但是使用了System.exit(0)这时也不会执行。或者被其他线程中断了该线程的执行,finally也不会执行。
  1. jdbc中PreparedStatement相比Statement有什么优势?参考:http://www.importnew.com/5006.html
  • 执行速度更快:前者中执行的sql语句如果再次执行时,数据库并不需要再对这条查询语句进行词法语法分析、优化、编译等过程,因为数据库将上次的编译好的查询保存了。
  • 可以防止SQL注入。
  1. 数据库事务的四大特性?
    A(原子性):事务中的语句要么全部执行,要么全部不执行。
    C(一致性):执行前后数据库的一致性仍然保持。
    I(独立性):各个并发的事务互不影响。
    D(持久性):事务执行完后对数据库的修改不会因为服务器故障而丢失,这一点依赖于数据库的备份和恢复机制。

  2. jdbc中getgeneratedkeys()方法何时使用?
    当向一个自动生成主键的表中插入记录时,该方法可以用来从数据库中获取该表为该条记录生成的主键值。参考:http://java-see.iteye.com/blog/1326233 http://stackoverflow.com/questions/1915166/how-to-get-the-insert-id-in-jdbc

  3. Cassandra数据库的结构?
    无中心节点的分布式数据库。主要有3大存储区:CommiLog、MemTable and SSTable。
    CommitLog:位于硬盘,存储用户提交的数据和操作记录。
    MemTable:位于内存,用户写(增加、修改)的数据先存放到这个区域,该区域满之后再将数据刷新到SSTable。
    SSTable:位于硬盘,用于存储写入的数据。

  4. Cassandra数据库如何保证可靠性?
    需要满足Quorum机制:每个集合都有交集。(参考:http://www.cnblogs.com/jzhlin/archive/2012/07/23/Quorum.html
    其实不只是Cassandra数据库,所有的NoSQL数据库要保证可靠性都应该满足如下条件:R+W>N。其中,
    R:读请求所需返回成功的节点数量
    W:写请求所需返回成功的节点数量
    N:副本数量

  5. Hash函数有哪些?
    MD5:输入不定长,输出为128位定长数字。原理是:
    1)定义四个32位的变量(AD),2)将输入划分为等长(512位)的块,3)对于每个块将它划分为等长(32位)的16部分,4)将这16部分数据和AD进行运算,并得到新的A'D',5)将A'D'和AD相加并作为下一个块计算所需的四个变量。6)对每个块重复这个过程,最后得到的AD就是128位的MD5值。
    除了MD5之外,还有DES、RSA、sha1哈希函数。

  6. Cassandra数据库的数据存储模式?
    Cassandra数据库基本上采用和关系型数据库类似的模式。只不过在列数据的存储上有所不同。关系数据库一个列就存储一个Value值,而Cassandra数据库存储的是一个Cell,该Cell包括三部分数据:name、value、timestamp。而且各个Cell都是按名称排列的,以支持切片查询。

  7. CAP定理:参考https://en.wikipedia.org/wiki/CAP_theorem
    C(一致性):每次读都能得到最新的数据。
    A(可用性):每次请求都会有回应,但并不保证得到的信息是最新的。
    P(分区容错性):即使有个分区因为网络故障而不能通信也可以保证系统正常运行。

  8. 递归和迭代的区别?
    递归需要重复的调用自身,且有终止条件。
    所谓迭代就是for循环!!!迭代是将大任务划分为小任务。

  9. 前序、中序和后序遍历算法是仅仅针对于二叉树的么?
    是的。要不你给我举个例子看看三叉树的中序遍历是什么样的!

  10. 深度优先搜索和广度优先搜索?
    深度优先搜索非递归方式实现需要使用栈来作为辅助(参考:http://blog.csdn.net/lalor/article/details/6845788 ),而广度优先搜索非递归实现则需要使用队列作为辅助。

  11. PageRank算法原理?(参考:https://zh.wikipedia.org/wiki/PageRank
    该算法是Google提出的一个对网页进行排序的算法。其原理是一个网页的PageRank值等于所有链向该网页的——PR值除以链出页面总数——的和,可以用以下公式表示:

    PageRank

  12. 随机森林算法原理?怎么解决决策树过拟合的问题?
    随机森林是由多颗决策树组合而成的,最后预测结果由所有决策树的组合投票得到。其算法原理如下:
    对于森林中的每棵树,有放回的抽取N(数据集大小)个样本(有放回所以可能有重复的记录),之后再进行分类。但和普通的决策树分类不同,此次的分类在每个节点都会随机的选择m(m << M)个特征(M为总的特征数量)进行分裂,一直到决策树不再生长为止。
    解决过拟合:
    因为随机森林中的决策树在每个节点进行分裂的时候用的特征都不是所有的特征,因此模型复杂度有所降低,这对过拟合能起到一定作用。

  13. 解释一下死锁?
    进程间死锁需要四个条件:1)进程间不能相互抢占资源;2)进程持有资源并在等待其他资源释放;3)进程间互斥;4)存在资源竞争。

  14. 说一下一个排序算法的原理以及它的时间复杂度?
    快速排序,时间复杂度为O(nlogn)

  15. KNN算法原理?
    KNN算法属于监督式学习算法,其原理是:
    1) 给定一个样本集以及对应的所属分类标签;
    2) 给定一条测试记录,将测试记录的各个特征和样本集中所有记录的特征进行比较,选出k个最相似(距离最近)的记录,并将这k个记录所对应分类的众数作为测试记录的分类结果。

  16. 基于比较的排序有哪些:冒泡?桶?基数?希尔?堆排序?
    冒泡:基于比较
    桶:先将数据划分到k个桶中,在对每个桶中的所有数据进行排序,时间复杂度为max(O(N), sum(O(Nilog(Ni))))。在划分桶的时候是基于映射函数,而在桶内排序则是基于排序。
    基数:将数据的每个字符当做关键字进行桶划分并排序,直到所有关键字排序完成。该算法也不能完全算是基于排序的。
    希尔:传统的插入排序是以步长为1进行全排序,而希尔排序是通过不断减小步长的大小来对部分数据进行排序,当步长减为1时也就是插入排序。该算法是基于比较的排序算法。
    堆排序:数据使用一维数组存储,算法步骤如下(参考:https://zh.wikipedia.org/wiki/%E5%A0%86%E6%8E%92%E5%BA%8F ):
    1) 建堆:将数组调整为堆模式(任一父节点都比其子节点小/大)
    2) 原地堆排序:将堆头和堆尾互换,并将堆大小减1,之后重新调整新堆。
    3) 重复第二步直到堆的大小为0。
    该算法复杂度为O(nlogn),第一步算法复杂度为O(nlogn),第二步也为O(nlogn)。也是基于比较的排序算法。

  17. tcp套接字中不会阻塞的是:read?write?accept?bind?
    tcp协议三次握手:参考:http://www.cnblogs.com/skynet/archive/2010/12/12/1903949.html
    在上面那篇帖子中讲的非常详细。不会阻塞的就是bind操作,因为该操作不需要等待另一个进程的回复。

  18. 序列标注模型(参考:http://weibo.com/p/230418c493e7920102v97b?pids=Pl_Official_CardMixFeedv6__4&feed_filter=1
    HMM:隐马尔科夫链模型,产生式模型,优点是!!!;缺点是:1)引入了两条独立性假设,2)需要列出所有可能地观察序列,在现实中很难做到。
    MEMM:最大熵隐马尔科夫模型,判别式模型,优点是:不需要HMM的独立性假设;缺点是:仅对局部进行条件概率求解,导致标注偏置。
    CRF:条件随机场模型,判别式模型,优点是:克服了MEMM的标注偏置;缺点是:训练代价过高,特征函数复杂度大。

  19. 选择题:
    EM算法能否求得最优解?不是凸函数可能求不到最优解。

Adaboost算法,所有被错分的样本权重更新比例相同?

  • 相同

当训练集较少时更难发生过拟合?

  • 过拟合是由于特征数量过多,导致模型复杂度过高,从而发生过拟合,和数据量其实没有什么关系。
  1. 在接口中定义的静态方法可以重写么?
    可以!!!但是不能定义为静态方法。

  2. 工厂方法模式中的工厂方法能否为静态方法?为什么?
    不能!由于静态方法不能被继承,因此子类不能覆盖父类的静态方法。

  3. volatile关键字
    防止由于编译器优化而导致的脏读。由该关键字修饰的变量在取值的时候会从内存当中读取,而非从寄存器中。参考:https://zh.wikipedia.org/wiki/Volatile%E5%8F%98%E9%87%8F

  4. 哈希表的应用领域?
    主要应用在查找(例如:Cassandra中一级索引所使用的数据结构bitmap)、编码(例如:MD5)以及聚类

  5. 并发操作会带来哪些不一致?
    脏读:一个事务A修改了数据但还未来得及提交时,另一个事务B开始读取数据,那么读取到的数据为A未提交的数据,此为脏读。
    不可重复读:一个事务A前后两次读到的数据不一致,这是由于A在两次读取的中间有另一个事务B对数据进行了修改。
    丢失修改:事务A修改了数据但未提交,这时事务B也修改了数据且完成了提交,那么事务A提交修改之后,事务B的修改就丢失了。

  6. $!, $?, $*用法?
    ref: http://blog.sina.com.cn/s/blog_464f6dba0100psy9.html

  7. Solr的全文索引原理?参考:(http://www.importnew.com/12707.html
    Solr对一个文档进行索引主要有两步:1)对文档进行分词,2)对词进行索引;其中,第一步是Solr需要做的,第二步则是由Solr的内核Lucene完成。那么,让我们来看看Solr的全文索引原理细节:
    1) 对文档进行分词:将文档中的每个词单独取出并转换为最基本的形式,比如说drove、driving都会转换为drive。
    2) 对词进行索引:对于每个单词,索引都会存储该单词所在的文档编号以及在该文档中出现的频率以及位置。
    以上就是Solr全文索引的原理。在最后还需要提一点的是Solr搜索结果的排序,排序所使用的算法是TF-IDF算法。

  8. Solr与Lucene的关系?与ElasticSearch有何区别?(参考:http://www.aboutyun.com/thread-17406-1-1.htmlhttps://endymecy.gitbooks.io/elasticsearch-guide-chinese/content/elasticsearch-vs-solr.html
    Slor和ElasticSearch都是基于Lucene开发的。Solr比较适合离线搜索,而ElasticSearch比较适合实时查询并且更容易扩展。

  9. Cassandra项目中遇到的问题?

  • 分页查询时结果有重复的问题:(参考:http://zhaoyanblog.com/archives/164.html
    这是由于Cassandra各个节点查询到主键时会对主键进行排序,之后再将数据发送到连接节点,连接节点收到数据后不会再对数据进行排序,而是直接删除连续数据当中重复的,这样做的目的是效率更高,将大文件的排序分拆为小文件的排序。
    而当时我们做的时候没有对主键进行排序,而是直接使用Solr返回的顺序,这样的话,重复的数据就不会连续的排在一起,而是隔开了,那么连接节点在分页显示时,显然会显示这些隔开了的重复数据,从而导致查询结果变多。
  • ByteBuffer不能序列化的问题:
    byteBuffer本身没有实现Serializable接口,因此不能直接序列化。当时我们的解决方法是将byteBuffer中的字节取出来当做字节数组,这样的话就可以进行序列化。
  • 索引插入过慢的问题:
    当时我们将Cassandra索引数据插入到Solr后进行测试,发现数据插入非常缓慢,因此我们就怀疑是Solr数据插入过慢的原因,因为我们就改了那一个地方。之后在网上搜索Solr优化,我们发现Solr有一个自动提交的功能,用户可以设置记录达到多少之后进行插入,或者相隔多长时间进行插入。而我们之前就是数据插入一条,就commit一次,这样就导致数据插入特别慢,耗费了大量时间。我们使用了Solr的自动提交之后,数据插入的速度就得到了大大提高。
  1. Spark和Mapreduce的区别?
  • 它们的架构相同,都是主从节点的模式。由一个master管理多个worker。
  • Spark适宜处理的数据量相对MapReduce来说更小,因为Spark基于内存的计算更容易出现数据丢失,比如说服务器断电了,那内存数据全没了,但是MapReduce的还在硬盘当中。
  • Spark是基于内存的计算,中间数据优先存放在内存当中,计算速度相比MapReduce更快。
  • Spark的惰性计算和pipeline可以减少不必要的计算。惰性计算保证了有需要再计算,而pipeline则可以节约大量内存空间。
  1. spark任务生成和调度原理?
  • 任务生成过程:
    用户提交应用程序之后,Spark将程序转换为一个个的Job,之后由DAGSchedule将每个Job转换为逻辑计划图,之后再对其进行依赖性分析划分为多个Stage,每个Stage中都可以进行Pipeline。到这一步DAGSchedule就把Stage传送给TaskSchedule,TaskSchedule收到Stage之后就会将Stage划分为多个Task,并分发到各个节点去执行。
  • 任务调度过程:
    任务调度分为两个部分:1)此时该调度哪个Task去运行;2)调度这个Task去哪个节点运行。对于第一个问题,Spark设计了专门的调度算法去管理,最基本的是FIFO、FAIR调度算法,还要一个是调度池调度算法,我想重点讲一下调度池调度。调度池调度是针对多线程并发的情况,每个线程都可以拥有自己的一个任务池,之后这个线程提交的任务都提交到自己的任务池里。在多个任务池之间,管理员可以配置任务池的权重,权重越高获得的资源就越多,这样就可以分离大任务和小任务。在任务池之内,任务调度的方式是采用FIFO或者FAIR调度算法。这就是调度池调度。那么第二个问题,对于一个确定的Task,应该把它放到哪个节点去执行?对于Spark,它是根据数据本地性来进行调度的,这里所说的数据指的是任务的输入数据,数据本地性的优先级是缓存>硬盘>任何一个节点。也就是说,任务优先调度到缓存了所需数据的节点,之后才是硬盘当中有数据的节点,最后才是随意一个节点都行。
  1. 你做的Spark任务调度是基于Standalone模式的,那么在Yarn模式下是否可以使用?
    可以!因为Yarn是资源调度器,它并不做任务调度。我们所做的就是和任务调度相关。

  2. Java类中的equals方法:(参考:http://mt.sohu.com/20160812/n463986365.shtml

  • 如果存在继承关系,重写equals方法时需要考虑父类,那么我们就应该使用getClass方法先判断两个对象是否为相同类的实例,之后再调用super.equals()方法来判断父类实例的属性值是否相同,最后再判断自身的其他属性。
  • 重写equals方法时最好重写hashCode方法,以免由于使用Map类而出现对象中存在同一个类的两个属性相同的实例,因为Map类存放对象是通过key值是否相同,而key的值则是根据对象的hashCode得来的。
  • Java八大数据类型:byte、short、char、int、float、double、long、boolean。
  1. B+tree相对于B Tree的优点?
  • B+树由于数据全都存储在叶子节点,且叶子节点都使用指针相连接,因此可以提高缓存命中率,减少IO次数。
  • B Tree由于数据存储在各个节点当中,因此可以提高随机查询的速度,但范围查询没有B+tree的性能好。
  1. HashMap和ConcurrentMap的区别?
  • HashMap不是线程安全的,ConcurrentMap是线程安全的。
  • ConcurrentMap的实现原理是通过将数据分成一段一段,每段由HashTable存储,HashTable线程安全的实现就是在方法前加上Synchronized修饰符。
  1. 集合类有哪些?(参考:http://wiki.jikexueyuan.com/project/java-interview-bible/collection.html
    主要有四大类:Set/List/Map/Queue

    集 合 类

  2. 多线程如何实现同步?

  • 使用synchronized修饰方法或者代码块。
  • 使用java.util.concurrent包下的ReentrantLock/ReentrantReadWriteLock类定义锁对象,之后在需要同步的方法中调用lock()方法即可实现同步。
  • 使用信号量Semaphore,使并发访问的数量控制为1即可。
  1. OS中的调度算法?(参考:http://blog.chinaunix.net/uid-25132162-id-361291.html
  • 调度算法分为进程调度算法、页面置换算法、批处理作业调度算法、磁盘调度算法。
  1. String, StringBuilder, StringBuffer的区别与联系?
    String不可变,StringBuffer线程安全且可变,StringBuilder线程不安全但可变。(参考:http://blog.csdn.net/rmn190/article/details/1492013

  2. 数据库和数据仓库?
    数据库面向于用户,主要用于存储实时发生的数据以及为用户提供相关的数据操作,比如说增删改查等;而数据仓库面向公司内部,一般用于长时间历史数据的存储,为数据挖掘分析提供支持。

  3. union和unionall的区别?
    union和unionall都是对两个表的数据合并,不同的是,union会去除重复行并排序,而unionall并不去除重复且不排序。(参考: http://www.cnblogs.com/xiangshu/articles/2054447.html

  4. truncate、drop、delete区别?

  • truncate和drop都是数据库定义语言,而delete是数据库操作语言。
  • truncate仅仅删除数据,而drop不仅会把数据删除,同时也会把和表相关的触发器以及索引等删除。
  • 在Oracle当中,truncate和drop等数据库定义语言不支持回滚,而delete可以回滚。
  1. 如何去除两个表中相同的数据?
    首先使用intersect找到两个表的交集,之后使用delete语句删除相同的部分即可。

  2. volatile修饰符的适用场合?
    volatile修饰符可以用于线程安全,但是功能并没有synchronized修饰符强大。volatile修饰符仅仅能够保证:某个线程对数据的修改,可以对其他线程可见。但是并不能像synchronized修饰符那样保证互斥。(参考:http://www.ibm.com/developerworks/cn/java/j-jtp06197.html

  3. ThreadLocal是干嘛的?适用场合是?

  • 功能:该类是用于实现线程安全的,可以保证每个线程都有自己独立的私有变量,线程之间互不影响。比较适合用于存储每个线程的交易ID或者用户ID之类的变量。
  • 实现:每个线程(Thread)都有一个ThreadLocalMap变量,该变量得key为ThreadLocal类型,值为所需要存储的私有变量值。通过创建ThreadLocal对象,并调用.set(value)方法,即可完成私有变量得绑定。set方法的实现是:首先通过Thread.currentThread()获取当前线程,然后得到该线程的ThreadLocalMap变量map,之后通过该map的set方法将变量和线程进行绑定。(参考:http://www.cnblogs.com/mingforyou/archive/2012/03/10/2389284.html
  1. 虚函数是干嘛的?虚函数和非虚函数有何区别?
    在java中,所有未使用final修饰的函数都是虚函数,基类中的虚函数可以被派生类覆盖。而final修饰的函数则是非虚函数,不能被派生类覆盖。其中,被private修饰符修饰的方法隐含了final修饰符,所以也不能被派生类覆盖。(参考:http://www.cnblogs.com/Fc-ios/p/3793989.html )但是static修饰符修饰的方法是不是隐含了final修饰符呢?

  2. Solr本身的索引机制是什么?比如说倒排索引?倒排索引会不会存偏移量?偏移量有什么用?
    Solr索引机制有很多种,其中最为核心的是用于文档检索的倒排索引。倒排索引以单词作为关键字,文档编号以及关键词的出现频率作为索引数据。在索引数据当中,偏移量一般也会保存,其作用主要是用于Solr的短语查询(参考:http://www.tuicool.com/articles/jqQJrm )。

  3. 你们是怎么将Cassandra查询语句转换为Solr查询的?
    我们自己写了一个转换器(具体如何实现的我并不是很清楚,由其他成员实现的)。我主要负责索引数据的插入以及查询数据的读取。

  4. 一致性哈希是啥?
    一致性哈希主要用于分布式存储系统当中解决负载均衡的问题。传统哈希在数组长度发生变化时,数据全都需要重新洗牌,因为哈希函数和数组长度相关。与之不同的是,一致性哈希和数组长度并不相关,数组长度的改变并不能影响到所有数据的存储,只会影响部分数据的存储。举个例子来说,在Cassandra数据库当中就用到了一致性哈希来进行数据的负载均衡。它是这么做的,首先得到哈希函数的取值范围,之后每个节点分别负责存储某个值域之间的数据。当Cassandra集群当中的某个节点宕机后,该节点存放的数据就会由它相邻的节点进行存储。当Cassandra集群增加节点时,它就会将属于该节点值域内的数据存储到这个节点当中。

  5. Spark当中的广播变量
    当一个作业的多个任务使用到相同的数据集时才需要使用到,当使用这种广播变量时,变量被广播到节点上的副本不能被修改,只能读。

  6. Spark你为什么使用Standalone模式?其他的调度模式是如何的?有什么区别?
    因为Spark本身的Standalone模式能够满足我们的需求,所以采用这种模式。
    因为我们关注的是任务调度,而非资源调度。Standalone以及Yarn等都是资源调度器,和Spark本身的任务调度关系不大,因此我们也并不需要去纠结到底采用哪种模式更好。
    目前Spark可以以Standalone、Yarn以及Mesos这三种方式进行部署,这三种调度模式有何区别?Mesos给予应用程序对资源的选择权,应用程序可以通过自身的调度算法来判断Mesos所分配的资源对自己是否合适。而Yarn分配资源之后,应用程序没有选择权,Yarn直接决定了应用程序的执行位置。

  7. 单例模式注意点:

  • 构造函数设置为私有
  • 使用懒汉模式需要使用同步
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容