集群和分布式都是由多个节点组成,但是集群之间的通信协调基本不需要,而分布式各个节点的通信协调必不可少。
集群主要是为了应对请求压力的分担,从而有了LB,负载均衡集群;为了应对可用性,从而有了HA,高可用性集群;为了更强的性能,从而有了HP,高性能集群;为了高并发大规模性能,从而有分布式系统集群。
服务器集群:
服务器集群就是指将很多服务器集中起来一起进行同一种服务,在客户端看来就像是只有一个服务器。集群可以利用多个计算机进行并行计算从而获得很高的计算速度,也可以用多个计算机做备份,从而使得任何一个机器坏了整个系统还是能正常运行。
服务器负载均衡:
负载均衡 (Load Balancing) 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
分布式服务器:
所谓分布式资源共享服务器就是指数据和程序可以不位于一个服务器上,而是分散到多个服务器,以网络上分散分布的地理信息数据及受其影响的数据库操作为研究对象的一种理论计算模型服务器形式。分布式有利于任务在整个计算机系统上进行分配与优化,克服了传统集中式系统会导致中心主机资源紧张与响应瓶颈的缺陷,解决了网络GIS 中存在的数据异构、数据共享、运算复杂等问题,是地理信息系统技术的一大进步。
这个三种架构都是常见的服务器架构,集群的主要是IT公司在做,可以保障重要数据安全;负载均衡主要是为了分担访问量,避免临时的网络堵塞,主要用于电子商务类型的网站;分布式服务器主要是解决跨区域,多个单个节点达到高速访问的目前,一般是类似CDN的用途的话,会采用分布式服务器。
3.hive 的使用,内外部表的区别,分区作用, UDF 和 Hive 优化
(1)hive 使用:仓库、工具
(2)hive 内部表:加载数据到 hive 所在的 hdfs 目录,删除时,元数据和数据文件都删除
外部表:不加载数据到 hive 所在的 hdfs 目录,删除时,只删除表结构。
(3)分区作用:防止数据倾斜
(4)UDF 函数:用户自定义的函数 (主要解决格式,计算问题 ),需要继承 UDF 类
(5)Hive 优化:看做 mapreduce 处理
排序优化: sort by 效率高于 order by
分区:使用静态分区 (statu_date="20160516",location="beijin") ,每个分区对应 hdfs 上
的一个目录,减少 job 和 task 数量:使用表链接操作,解决 groupby 数据倾斜问题:设置 hive.groupby.skewindata=true ,那么 hive 会
4. hive 跟 hbase 的区别是?
共同点:
1).hbase 与 hive 都是架构在 hadoop 之上的。都是用 hadoop 作为底层存储
区别:
2).Hive 是建立在 Hadoop 之上为了减少 MapReduce jobs 编写工作的批处理系统,HBase
是为了支持弥补 Hadoop 对实时操作的缺陷的项目 。
3).想象你在操作 RMDB 数据库,如果是全表扫描,就用 Hive+Hadoop,如果是索引访问,
就用 HBase+Hadoop 。
4).Hive query 就是 MapReduce jobs 可以从 5 分钟到数小时不止,HBase 是非常高效的,
肯定比 Hive 高效的多。
5).Hive 本身不存储和计算数据,它完全依赖于 HDFS 和 MapReduce,Hive 中的表纯逻辑。
6).hive 借用 hadoop 的 MapReduce 来完成一些 hive 中的命令的执行
7).hbase 是物理表,不是逻辑表,提供一个超大的内存 hash 表,搜索引擎通过它来存
储索引,方便查询操作。
8).hbase 是列存储。
9).hdfs 作为底层存储,hdfs 是存放文件的系统,而 Hbase 负责组织文件。
10).hive 需要用到 hdfs 存储文件,需要用到 MapReduce 计算框架。
5.hadoop 的 namenode 宕机,怎么解决?
先分析宕机后的损失,宕机后直接导致client无法访问,内存中的元数据丢失,但是硬盘中的元数据应该还存在,如果只是节点挂了,重启即可,如果是机器挂了,重启机器后看节点是否能重启,不能重启就要找到原因修复了。但是最终的解决方案应该是在设计集群的初期就考虑到这个问题,做namenode的HA。
6.kafka的message包括哪些信息
一个Kafka的Message由一个固定长度的header和一个变长的消息体body组成
header部分由一个字节的magic(文件格式)和四个字节的CRC32(用于判断body消息体是否正常)构成。当magic的值为1的时候,会在magic和crc32之间多一个字节的数据:attributes(保存一些相关属性,比如是否压缩、压缩格式等等);如果magic的值为0,那么不存在attributes属性 body是由N个字节构成的一个消息体,包含了具体的key/value消息
7.怎么查看kafka的offset
0.9版本以上,可以用最新的Consumer client 客户端,有consumer.seekToEnd() / consumer.position() 可以用于得到当前最新的offset