Lanyon 记录下日常工作与学习哈~,还有技术分享哦。。🎉

大数据三架马车之Yarn、BigTable

Hadoop V1.0版本中,资源调度部分存在扩展性差、可用性差、资源利用率低的改问题,其中,Job Tracker既要做资源管理,又要做任务监控,同时Job的并发数页存在限制。同时,JobTracker存在单点故障问题,任务调度部分不支持调度流式计算、迭代计算、DAG模型。

2013年,Hadoop 2.0发布,引入了YarnHDFS HAFederation

Yarn的设计思路(Yet Another Resource Manager)

Yarn由三部分组成:ResourceManagerNodeManagerApplicationMaster,其中:RM掌控全局的资源,负责整个系统的资源管理和分配(处理客户端请求、启动/监控AMNM、资源调度和分配),NM驻留在一个YARN集群的节点上做代理,管理单个节点的资源、处理RMAM的命令,AM为应用程序管理器,负责系统中所有所有应用程序的管理工作(数据切分、为APP申请资源并分配、任务监控和容错)。

Yarn主要解决数据集群资源利用率低、数据无法共享、维护成本高的问题,常见的应用场景有:MapReduce实现离线批处理、Impala实现交互式查询分析、用Strom实现流式计算、在Spark下来完成迭代计算。

ReadMore »

大数据三架马车之MapReduce

HadoopApache的一个开源的分布式计算平台,以HDFS分布式文件系统和MapReduce计算框架为核心,为用户提供一套底层透明的分布式基础设施。

MapReduce提供简单的API,允许用户在不了解底层细节的情况下,开发分布式并行程序。利用大规模集群资源,解决传统单机无法解决的大数据处理问题,其设计思想起源于MapReduce Paper

MapReduce编程模型

MapReduce是一种用于处理和生成大型数据集的编程模型和相关实现,用户指定一个map()函数接收处理key/value对,同时产生另外一组临时key/value集合,reduce()函数合并相同intermediate key关联的value数据,以这种函数式方风格写的程序会自动并行化并在大型商品机器集群上运行。

Paper发布之前的几年,Jeffrey DeanGoogle的一些工程师已经实现了数百个用于处理大量原始数据且特殊用途的计算程序,数据源如抓取的文档、Web日志的请求等,来计算各种派生数据,像倒排索引、Web文档图结构的各种表示、每个主机爬取的页面数汇总等。

ReadMore »

大数据的三架马车之HDFS

主要介绍HDFS的基本组成和原理、Hadoop 2.0对HDFS的改进、HADOOP命令和基本API、通过读Google File System论文来理解HDFS设计理念。

HadoopApache一个开源的分布式计算平台,核心是以HDFS分布式文件系统和MapReduce分布式计算框架组成,为用户提供了一套底层透明的分布式基础设施。

HDFSHadoop分布式文件系统,具有高容错性、高伸缩性,允许用户基于廉价精简部署,构件分布式文件系统,为分布式计算存储提供底层支持。MapReduce提供简单的API,允许用户在不了解底层细节的情况下,开发分布式并行程序,利用大规模集群资源,解决传统单机无法解决的大数据处理问题,其设计思想起源Google GFSMapReduce Paper

在Mac上搭建Hadoop单机版环境

从 https://hadoop.apache.org 下载二进制的安装包,具体配置可进行Google。配置完成后,在执行HDFS命令时会提示 Unable to load native-hadoop library for your platform...using buildin-java classes..,运行Hadoop的二进制包与当前平台不兼容。

ReadMore »

k8s核心组件及pod组件间通信原理

介绍k8s的核心组件如PodControllerStatefulSet等组件以及组件间通信原理ServiceIngress服务。

Docker实例及Pods间的通信原理

在通信协议中“网络栈”包括有:网卡(network interface)、回环设备(loopback device)、路由表(routing table)和iptables规则。在docker中启动一个容器可使用宿主机的网络栈(-net=host),指定-net后默认不开启network namespace空间:

$ docker run –d –net=host --name nginx-host nginx

nginx服务启动后默认监听主机80端口,容器启动后会创建一个docker0的网桥。docker实例通过Veth Pair与宿主机建立连接关系,其中Veth的一端在容器内,另一段插在宿主机的docker0网桥上。

ReadMore »

kafka client客户端实践及原理剖析

主要描述kafka java client的一些实践,以及对client操作数据的一些原理进行剖析。

kafka对集群部署环境的一些考虑,kafkaScala 语言和 Java 语言编写而成,编译之后的源代码就是普通的“.class”文件。本来部署到哪个操作系统应该都是一样的,但是不同操作系统的差异还是给 Kafka 集群带来了相当大的影响。

主流的操作系统有3种:windowslinuxmacOS,考虑到操作系统与kafka的适配性,linux系统显然要比其它两个更加合适部署kafka,主要在I/O模式的使用、数据网络传输效率、社区支持度三个方面支持比较好。

linux中的系统调用select函数属于I/O多路复用模型,大名鼎鼎的epoll系统调用则介于I/O 多路复用、信号驱动I/O模型。因此在这一点上将kafka 部署在Linux 上是有优势的,因为能够获得更高效的 I/O性能。零拷贝(Zero Copy)技术,就是当数据在磁盘和网络进行传输时避免昂贵的内核态数据拷贝从而实现快速的数据传输,Linux 平台实现了这样的零拷贝机制。

ReadMore »