1、Hive表关联查询,如何解决数据倾斜的问题?(☆☆☆☆☆) 1)倾斜原因:map输出数据按key Hash的分配到reduce中,由于key分布不均匀、业务数据本身的特、建表时考虑不周、等原因造成的reduce 上的数据量差异过大。 (1)key分布不均匀; (2)业务数据本身的特性; (3)建表时考虑不周; (4)某些SQL语句本身就有数据倾斜; 如何避免:对于key为空产生的数据倾斜,可以对其赋予一个随机值。 …
1、Hive表关联查询,如何解决数据倾斜的问题?(☆☆☆☆☆) 1)倾斜原因:map输出数据按key Hash的分配到reduce中,由于key分布不均匀、业务数据本身的特、建表时考虑不周、等原因造成的reduce 上的数据量差异过大。 (1)key分布不均匀; (2)业务数据本身的特性; (3)建表时考虑不周; (4)某些SQL语句本身就有数据倾斜; 如何避免:对于key为空产生的数据倾斜,可以对其赋予一个随机值。 …
Hadoop面试题总结(五)——优化问题 1、MapReduce跑得慢的原因?(☆☆☆☆☆) Mapreduce 程序效率的瓶颈在于两点: 1)计算机性能 CPU、内存、磁盘健康、网络 2)I/O 操作优化 (1)数据倾斜 (2)map和reduce数设置不合理 (3)reduce等待过久 (4)小文件过多 (5)大量的不可分块的超大文件 (6)spill次数过多 (7)merge次数过多等 2、MapR…
Hadoop面试题(四)——YARN 1、简述hadoop1与hadoop2 的架构异同 1)加入了yarn解决了资源调度的问题。 2)加入了对zookeeper的支持实现比较可靠的高可用。 2、为什么会产生 yarn,它解决了什么问题,有什么优势? 1)Yarn最主要的功能就是解决运行的用户程序与yarn框架完全解耦。 2)Yarn上可以运行各种类型的分布式运算程序(mapreduce只是其中的一种),比如mapreduce、storm程序,spark程序…… 3、HDFS的数据压缩算法?(☆☆☆☆☆) Hado…
1、谈谈Hadoop序列化和反序列化及自定义bean对象实现序列化? 1)序列化和反序列化 (1)序列化就是把内存中的对象,转换成字节序列(或其他数据传输协议)以便于存储(持久化)和网络传输。 (2)反序列化就是将收到字节序列(或其他数据传输协议)或者是硬盘的持久化数据,转换成内存中的对象。 (3)Java的序列化是一个重量级序列化框架(Serializable),一个对象被序列化后,会附带很多额外的信息(各种校验信息,header,继承体系等),不便于在网络中高效传输。所以,hadoop自己开发了一套序列化机制(…
安装 开始在 PHP 中使用 Redis 前, 我们需要确保已经安装了 redis 服务及 PHP redis 驱动,且你的机器上能正常使用 PHP。 接下来让我们安装 PHP redis 驱动:下载地址为:https://github.com/nicolasff/phpredis。 PHP安装redis扩展 /usr/local/php/bin/phpize #php安装后的路径 ./configure --with-php-config=/usr/local/php/bin/php-config make &a…
安装 开始在 Java 中使用 Redis 前, 我们需要确保已经安装了 redis 服务及 Java redis 驱动,且你的机器上能正常使用 Java。 Java的安装配置可以参考我们的 Java开发环境配置 接下来让我们安装 Java redis 驱动: 首先你需要下载驱动包,下载 jedis.jar,确保下载最新驱动包。 在你的classpath中包含该驱动包。 连接到 redis 服务 import redis.clients.jedis.Jedis; public class RedisJava {…
分区是分割数据到多个Redis实例的处理过程,因此每个实例只保存key的一个子集。 分区的优势 通过利用多台计算机内存的和值,允许我们构造更大的数据库。 通过多核和多台计算机,允许我们扩展计算能力;通过多台计算机和网络适配器,允许我们扩展网络带宽。 分区的不足 redis的一些特性在分区方面表现的不是很好: 涉及多个key的操作通常是不被支持的。举例来说,当两个set映射到不同的redis实例上时,你就不能对这两个set执行交集操作。 涉及多个key的redis事务不能使用。 当使用分区时,数据处理较为复杂,比如你…
Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。这意味着通常情况下一个请求会遵循以下步骤: 客户端向服务端发送一个查询请求,并监听Socket返回,通常是以阻塞模式,等待服务端响应。 服务端处理命令,并将结果返回给客户端。 Redis 管道技术 Redis 管道技术可以在服务端未响应时,客户端可以继续向服务端发送请求,并最终一次性读取所有服务端的响应。 实例 查看 redis 管道,只需要启动 redis 实例并输入以下命令: $(echo -en "PING\r\n SET w3ckey…
Redis 通过监听一个 TCP 端口或者 Unix socket 的方式来接收来自客户端的连接,当一个连接建立后,Redis 内部会进行以下一些操作: 首先,客户端 socket 会被设置为非阻塞模式,因为 Redis 在网络事件处理上采用的是非阻塞多路复用模型。 然后为这个 socket 设置 TCP_NODELAY 属性,禁用 Nagle 算法 然后创建一个可读的文件事件用于监听这个客户端 socket 的数据发送 最大连接数 在 Redis2.4 中,最大连接数是被直接硬编码在代码里面的,而在2.6版本…
Redis 性能测试是通过同时执行多个命令实现的。 语法 redis 性能测试的基本命令如下: redis-benchmark [option] [option value] 实例 以下实例同时执行 10000 个请求来检测性能: redis-benchmark -n 10000 PING_INLINE: 141043.72 requests per second PING_BULK: 142857.14 requests per second SET: 141442.72 requests per second …