yield-bytes

沉淀、分享与无限进步

  在前面的文章《在hadoopHA节点上部署kafka集群组件》,介绍大数据实时分析平台生态圈组件——kafka,前向用于连接flume,后向连接spark streaming。在研究Kafka过程中,发现该中间件的设计很巧妙,因此专设一篇文章用于深入理解Kafka核心知识。Kafka已经纳入个人目前最欣赏的中间件list:redis,zookeeper,kafka

1、kafka集群架构图

以下为kafka集群一种经典的架构图,该图以《在hadoopHA节点上部署kafka集群组件》文章的kafka集群以及sparkapp topic作为示例绘成,本文的内容将以该图为标准作为说明。
kafka集群架构图图1 kafka集群架构图

阅读全文 »

  在前面的文章中《在hadoopHA节点上部署flume高可用组件 》已经介绍了flume实时收集acces.log,同时给出flume是如何实现数据流向的高可用环境测试。在后面的文章中会给出实时大数据项目的开发,实时数据源由flume sink到kafka的topic里,而不是前面提到的hdfs,目的是利用kafka强大的分布式消息组件用于分发来自flume的实时数据流。
kafka集群在Hadoop实时大数据项目的位置,如下图所示:
在这里插入图片描述

阅读全文 »

  前面的blog已实现了hadoopHA的项目环境,本文继续为该hadoop环境引入flume组件,用于实时大数据项目的开发。考虑到项目已经使用了hadoopHA,那么flume的组件也相应的部署成HA模式

阅读全文 »

  在前面文章关于hadoop大数据项目开发中,每台服务器之间其实存在大量的IO,例如NameNode服务器和DataNode服务器同步fimag文件件,DataNode之间的数据IO,为压榨服务器对于超大数据的吞吐量,在服务器的网络层使用bond模式配置Linux网卡,可以将该服务器上多个物理网卡虚拟成一张网卡,由该虚拟网卡对外提供统一网络服务,实现多个网卡自适应负载均衡以及提高数据的吞吐量,同时也实现链路双备份功能,保证服务器底层网络高可用性。bond虚拟网卡可以绑定多个网络,例如绑定2两个网卡,一般物理服务器有4个千兆网卡,所以也可以绑定4个网卡,绑定的网卡类型需要一致,否则无法进行bond模式配置。
  以centos7.5 的两个网卡配成bond模式作为示例,其中在之前的hadoop的相关文章里,nn节点与dn2节点构成HA,dn节点作为DataNode,当这三个节点的底层网络都配成bond模式,将进一步提高本blog之前搭建大数据开发平台的高可用性。作为全栈开发者,这些涉及简单网络的配置,应该需要掌握。

阅读全文 »

  在某些python的开发项目中,或跑一些demo,例如tensorflow的demo,要求python3.5以上的版本,若原系统环境只有python2.7.5,显然无法满足测试环境。若为系统安装python3.5+,有些库又会造成版本冲突,因此需要使用python的虚拟环境工具来解决这些矛盾。当然也可采用python的docker镜像,使用一个镜像独立环境运行项目,但相比于python虚拟化工具来说,这种docker镜像显得有点重。

阅读全文 »

  以往项目中也有引入Pandas,用于有关数据处理和分析的环节,结合Python的Web开发,很容易开发出一款轻量BI系统。Pandas、Numpy、Scipy、matplotlib、scikit-learn和Jupyter Notebook结合使用,完全可以组成非常出色的数据分析与挖掘的生产环境工具,数据方面的应用,比matlab强不少,以至于本人也不断强化这方面的积累。单独拿出这方面技能,即可完成数据分析师的相关工作(又称提数工程师)。本文主要归档一些高频使用的预处理方面的函数,注意本文不涉及Pandas数据挖掘和数理统计方面的知识点(会在另外blog给出)。

阅读全文 »

  在装饰器的定义中,经常引用functools.wraps,本篇文章将深入其内部源码,由于该方法的定义中,还引入其他重要的函数或者类,因此根据其调用链,对每个函数或者方法或者类进行单独分析,所以文章的结构大致如下:

第一部分内容:

根据其调用链:functools.wraps——>partial——>update_wrapper
functools.wraps需要调用partial,因此需要解析partial的源码
partial调用了update_wrapper函数,因此需要解析update_wrapper的源码

阅读全文 »

  前面的项目中,已经实现了HadoopHA、HBaseHA,本文将加入Hive数据仓库工作,并整合HBase,实现完整的大数据开发项目所具备的开发环境,为后面博客关于数据应用层开发提供支撑。

1、Hive Requirements

​ 按官网给出的基本环境

  • Java 1.7: Hive versions1.2 onward require Java 1.7 or newer. java1.7或更高版本
  • Hadoop 2.x (preferred):推荐hadoop2.x版本
阅读全文 »

  部分较小的项目例如flask,对内部使用,可无需使用web server,直接用flask自带服务即可完成需求,但考虑到直接使用python app.py启动flask后,运行过程进程可能会退出,因此有必要对其进行监控并自动重启,supervisor可满足需求,加上其用python写成,可以独自进行二次开发(supervisor的代码值得学习)。本文是对以往部分项目进行一个整理,作为参考资料归档。

阅读全文 »

  在前面的文章中,详细给出了HBase HA高可用部署以及测试的内容,本篇文章将对HBase架构进行分析。

1、有关HBase基本介绍

1.1 HBase解决的痛点:

  • 解决随机近实时的高效的读写
  • 解决非结构化的数据存储

1.2 HBase应用:

  • 可以存储非结构化的数据
  • 被用来做实时数据分析(整合flume、storm、streaming等)

    引用HBase作为业务存储,则需要注意的点(按官方指引的翻译):
    首先确保使用场景有足够多的数据,上亿或者十几亿行的数据,HBase将非常适合
    第二,确保业务需求中不需要用到关系型数据库那种严格的索引、事务、高级查询等
    第三点,确保足够多的硬件服务器,至少5台个HDFS节点以上,以便发挥HDFS性能。

1.3 Hbase特性:

  • Hadoop的分布式、开源的、多版本的非关系型数据库
  • Hbase存储Key-Value格式,面向列存储,Hbase底层为byte[]比特数组数据,不存在数据类型一说。

  • 严格一致的读写

  • 表的自动和可配置分片

  • RegionServer之间的自动故障转移支持

  • 方便的基类,用于通过Apache HBase表备份Hadoop MapReduce作业

  • 块缓存和布隆过滤器用于实时查询

2、HBase架构

在这里插入图片描述如上图所示,架构主要有以下4个部分

阅读全文 »