• Fullnat系列(一):到底什么时候需要用fullnat呢?

    来,我再写篇小水文。 服务器为了提高性能,通常会选择横向扩展,一般有2种做法: 前置DNS服务器,同一个域名(Virtual Service)对应不同的真实服务器(Real Server),解析域名的时候,DNS服务器会轮询返回不同的服务器,这样真正提供服务的,就是不同的机器,达到负载分担的目的。 前置负载分担(LB)设备。可以是专业的LB设备,也可以是linux服务器开启LVS(4层)或者Nginx(7层)。LVS的使用可以参考前面的一篇文章。 目前的发行版,内核默认会集成LVS ...


  • 小玩意:如何让linux上挂死的进程重启?

    1、安装keepalived 2、配置keepalived检测 3、配置检测脚本check_dtm.sh 4、采集进程的启动脚本。 需求是这样的:我们在linux服务器上有一个采集进程,担心该进程出现故障挂死或者被人误杀,这种情况下需要能自动重启。使用peacemaker这样的分布式管理工具可以做到进程的监控,但毕竟体量较大,部署也稍嫌麻烦。 其实,使用keepalived就可以满足这种需求,部署起来也很简单,做个记录供以后查阅。 1、安装keepalived 2、配置ke...


  • HBase系列之Quick Start(一)

    NoSQL HBase 快速开始 最近由于工作关系,需要了解HBase,随手记录一些内容,以供查阅。 NoSQL 在刚接触Hadoop的时候,对Hive和HBase这两个组件总是不算特别清楚,都跟数据库有点关系,Hive又跟HBase有依赖,扯不太清楚。 如果要简单的说二者的区别,可以这样理解:可以把Hive理解为一个SQL Parser,其目的是为了方便那些会使用SQL编程的数据科学家们,但真正在跑的,是Hive翻译出来的Map Reduce程序。所以Hive的用处仍然是离线批量...


  • mysql:C源代码内嵌SQL语句的预编译工具

    本文较水 哪篇不水 今天遇到一个比较好玩的东西,记下来跟大家分享。 我们知道操作数据库,在JAVA环境中一般会使用JDBC,不管是mysql、oracle还是别的什么数据库都可以比较好的支持;但在一些比较古老(或者说比较谨慎)的系统中,比如银行业,可能其应用使用的还是C语言写的,这种情况JDBC是没门了,只能调用对应数据库提供的C lib,例如mysql的C库提供了这些接口: MYSQL *mysql_init(MYSQL *mysql) MYSQL *mysql_real_connect(M...


  • 使用lvs+keepalived为mysql提供高可靠的负载分担功能

    需求 1 安装软件 2 组网 3 配置keepalived 4 配置RS 5 配置LVS 6 测试 7 待扩展 7.1 内核connection同步 7.2 iptables 7.3 ldirectord 需求 1 安装软件 基本所有的Linux版本内核都包含了LVS,不需要再安装。 安装ipvsadm,用来控制内核lvs表项; keepalived,用来控制虚IP迁移; ldirectord,现在还没...


  • 百度PALO技术整理分析

    以下内容基本源于百度PALO(OLAP分析引擎)对外的一个视频演讲,讲的比较形象,下面做了简单的摘抄。 总体架构图 PALO对外体现为一个mysql的服务器,所有mysql相关的工具:mysql client,JDBC,基于mysql的报表工具、R语言等,都可以直接对接PALO。 FE即Front End,PALO使用了RAFT协议来共享元数据,所有FE都可以接收用户请求。RAFT协议类似PAXOS(代表实现zookeeper),但要简化很多。master故障后,follower可以根据che...


  • 使用nginx+keepalived实现RESTful API服务器的负载均衡和高可靠性

    1、设置nginx.repo: 2、安装nginx、keepalived 3、修改keepalived的配置文件 4、使用脚本检测nginx服务 5、配置nginx 5.1 配置nginx 5.2 配置ssl需要的server.crt、server.key 5.3 坑 核心需求是我们有一个RESTful API的服务集群,需要能够保证不管是web服务故障还是服务器整体故障,外部访问不会间断,并且在整体运行正常的时候,...


  • Hibernate之Hello World

    1、创建工程,导入Hibernate库。 2、建立包com.xxx.hibernatest 3、建立实体类的映射 4、对象类定义。 5、main入口 6、Hibernate主配置 Hibernate是一个优秀的持久化框架,其主要功能是将内存里的瞬时状态,通过JDBC持久化到硬盘数据库上。Hibernate以面向对象的思想来解决数据库的问题,可以简化数据库的访问。 这篇文章通过一个简单的示例,来建立Hibernate的初步认识,较水,记录用。 示例代码基本是从这篇文章里抄...


  • MapReduce具体问题(二)

    前一篇文章解答了Map任务数、启动人的细节,下面我们解答第二个问题: HDFS的block是否粗暴但忠实的将文件按照64MB分片呢?如果是的话,怎么保证Map获取到的Splits是正确的?具体到wordcount,MR是怎么处理一个单词跨block的情况呢? 我们从Map任务的人口开始说起。前面YARN分析的时候有提到过,AppMaster会将task提交到NodeManager,在NM的container里运行具体的任务。具体到MR来说,运行的任务就是MapTask/ReduceTask。 来看M...


  • MapReduce具体问题(一)

    MapReduce比较基础,但是经常会有一些问题不是很清楚,这一系列文章会解答几个经常问的问题。 本文解答第一个问题:是谁决定要起几个Map任务?在什么阶段呢? 还是以wordcount为例。 wordcount客户端在初始化job后调用Job.waitForCompletion方法就结束了,真正提交Job给Yarn的在MapReduce客户端代码的submit里做的。 public boolean waitForCompletion(boolean verbose ...