0%

内存淘汰


获取内存淘汰配置策略

1
127.0.0.1:6379>config get maxmemory-policy
  • volatile-lru:使用LRU算法从已设置过期时间的数据集合中淘汰数据。
  • volatile-ttl:从已设置过期时间的数据集合中挑选即将过期的数据淘汰。
  • volatile-random:从已设置过期时间的数据集合中随机挑选数据淘汰。
  • allkeys-lru:使用LRU算法从所有数据集合中淘汰数据。
  • allkeys-random:从数据集合中任意选择数据淘汰
  • no-enviction:禁止淘汰数据。

延时追踪及慢查询


Redis的延迟数据是无法从info信息中获取的。倘若想要查看延迟时间,可以用 Redis-cli工具加–latency参数运行,如:

1
Redis-cli --latency -h 127.0.0.1 -p 6379

结果为查询ID、发生时间、运行时长和原命令 默认10毫秒,默认只保留最后的128条。单线程的模型下,一个请求占掉10毫秒是件大事情,注意设置和显示的单位为微秒,注意这个时间是不包含网络延迟的。

阅读全文 »

Hbase学习

Hbase shell操作

一、建表

1.新建不带namespace表

1
create 'testTable','t1','t2'

2.新建带namespace表

  • 首先建一个namespace
    1
    create_namespace 'truman'
  • 其次再新建表
    1
    create_namespace 'truman:test','t1','t2'
    备注:t1,t2为column family
    1
    2
    create'reason:user_test','bs',{NUMREGIONS=>2,SPLITALGO=>'HexStringSplit'}

    二、查表

  • 列出所有表
    1
    list
  • 浏览某个表
    1
    scan 'testTable'

    三、数据操作

  • 增加数据
    1
    2
    3
    put 'testTable','row1','t1:name','value1'
    put 'testTable','row2','t1:name','value2'
    put 'testTable','row3','t1:name','value3'
  • 获取数据
    1
    get 'testTable','row1'
  • 删除数据
    1

    其他

    待完善

    参考

1.https://hbase.apache.org/book.html

利用winscp与putty构建自动化部署

前言

在运维过程中,会经常遇到维护的机器很多,更新软件版本比较繁杂,在此借鉴winscp与putty支持脚本的功能之上,使用window bat命令实现在window平台便捷部署linux上的应用。

方案

上传文件

此处利用winscp。updateLoadScript.txt 具体操作代码如下:

1
2
3
4
5
6
7
option batch on 
option confirm off
open scp://root:12345678@192.168.*.**
put E:\deploy\tt.txt /data/projects/
close
exit

此处主要,要提前用winscp连接到相应主机上,猜测要从缓存中取一些东西

执行命令

此处利用 putty。 command.txt 具体命令如下:

阅读全文 »

RedisCluster构建批量操作探讨

前言

众所周知,jedis仅支持redis standalone mset,mget等批量操作,在最新的redis cluster中是不支持的,这个和redis cluster的设计有关,将不同的实例划分不同的槽。不同的key会落到不同的槽上,所在的实例也就不同,这就对jedis的批量操作提出问题,即无法同时支持多个实例上的批量操作。(理解可能不是很深入,希望有人看到可以指教一下)

分布式储存产品存储方式

在分布式存储产品中,哈希存储与顺序存储是两种重要的数据存储和分布方式,这两种方式不同也直接决定了批量获取数据的不同,所以这里需要对这两种数据的分布式方式进行简要说明:

  1. hash分布:
    hash分布应用于大部分key-value系统中,例如memcache, redis-cluster, twemproxy,即使像MySQL在分库分表时候,也经常会用user%100这样的方式。
    hash分布的主要作用是将key均匀的分布到各个机器,所以它的一个特点就是数据分散度较高,实现方式通常是hash(key)得到的整数再和分布式节点的某台机器做映射,以redis-cluster为例子:

    问题:和业务没什么关系,不支持范围查询。
  2. 顺序分布
  3. 两种分布方式的比较:
分布方式 特点 典型产品
哈希分布 1. 数据分散度高
2.键值分布与业务无关
3.无法顺序访问
4.支持批量操作
一致性哈希memcache
redisCluster其他缓存产品
顺序分布 1.数据分散度易倾斜
2.键值分布与业务相关
3.可以顺序访问
4.支持批量操作
BigTable
Hbase

分布式缓存/存储四种Mget解决方案

1. IO的优化思路:

  • 命令本身的效率:例如sql优化,命令优化
  • 网络次数:减少通信次数
  • 降低接入成本:长连/连接池,NIO等。
  • IO访问合并:O(n)到O(1)过程:批量接口(mget),
阅读全文 »

storm集群搭建

前言

       Storm 是Twitter的一个开源框架。Storm一个分布式的、容错的实时计算系统。Twitter Storm集群表面上类似于Hadoop集群,Hadoop上运行的是MapReduce Jobs,而Storm运行topologies;但是其本身有很大的区别,最主要的区别在于,Hadoop MapReduce Job运行最终会完结,而Storm topologies处理数据进程理论上是永久存活的,除非你将其Kill掉。
Storm集群中包含两类节点:主控节点(Master Node)和工作节点(Work Node)。其分别对应的角色如下:

  1. 主控节点(Master Node)上运行一个被称为Nimbus的后台程序,它负责在Storm集群内分发代码,分配任务给工作机器,并且负责监控集群运行状态。Nimbus的作用类似于Hadoop中JobTracker的角色。
  2. 每个工作节点(Work Node)上运行一个被称为Supervisor的后台程序。Supervisor负责监听从Nimbus分配给它执行的任务,据此启动或停止执行任务的工作进程。每一个工作进程执行一个Topology的子集;一个运行中的Topology由分布在不同工作节点上的多个工作进程组成。

搭建

准备软件

1
2
3
1.JDK1.8
2.zookeeper-3.4.5-cdh5.6.0
3.Storm0.9.5

JDK安装

详见

Zookeeper集群搭建

阅读全文 »

1.下载jkd( http://www.oracle.com/technetwork/java/javase/downloads/index.html)

  • 对于32位的系统可以下载以下两个Linux x86版本(uname -a 查看系统版本)
  • 264位系统下载Linux x64版本

2.安装jdk(这里以.tar.gz版本,32位系统为例)

安装方法参考http://docs.oracle.com/javase/7/docs/webnotes/install/linux/linux-jdk.html

  • 选择要安装java的位置,如/usr/目录下,新建文件夹java(mkdir java)

  • 将文件jdk-7u40-linux-i586.tar.gz移动到/usr/java

  • 解压:tar -zxvf jdk-7u40-linux-i586.tar.gz

  • 删除jdk-7u40-linux-i586.tar.gz(为了节省空间)

至此,jkd安装完毕,下面配置环境变量

3.打开

1
/etc/profile(vim /etc/profile)

在最后面添加如下内容:

阅读全文 »

一、hostname 修改详解

  1. 暂时性修改使用命令:
    1
    hostname ******
    此命令不用重启,重新打开一个终端,即可看到修改。但是重启后失效(本人red hat5竟然不会)
  2. 永久性修改
在1之后,修改 /etc/sysconfig/network

二、配置ssh

本节参考:网址

  1. 生成公钥
    1
    $ssh-keygen 
  2. 公钥分发到远程主机
    1
    $ ssh-copy-id user@host

1
2
3
4
5
6
7
8
9
10
11
12
13
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
df:a8:ff:b2:0d:f8:1c:a9:d9:f9:fa:39:29:9d:6f:42.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending key in /root/.ssh/known_hosts:13
RSA host key for lab3 has changed and you have requested strict checking.
Host key verification failed.

问题解决:
删除/root/.ssh/known_hosts:13行中的信息即可

阅读全文 »

1.Hbase web整合报以下错误
SEVERE: Servlet.service() for servlet [jsp] in context with path [] threw exception [java.lang.AbstractMethodError: javax.servlet.jsp.JspFactory.getJspApplicationContext(Ljavax/servlet/ServletContext;)Ljavax/servlet/jsp/JspApplicationContext;] with root cause
java.lang.AbstractMethodError: javax.servlet.jsp.JspFactory.getJspApplicationContext(Ljavax/servlet/ServletContext;)Ljavax/servlet/jsp/JspApplicationContext;
解决方案
pom文件中排出冲突jar

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 <!-- hbase -->
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId>
<version>1.0.0-cdh5.4.0</version>
<exclusions>
<exclusion>
<artifactId>jasper-compiler</artifactId>
<groupId>tomcat</groupId>
</exclusion>
<exclusion>
<artifactId>jasper-runtime</artifactId>
<groupId>tomcat</groupId>
</exclusion>
</exclusions>
</dependency>

2.Hbase jar引入,pom报错误Missing artifact jdk.tools:jdk.tools:jar:1.7
** 解决方案**
eclipse.ini (before -vmargs!):


-vm
C:/{your_path_to_jdk170}/jre/bin/server/jvm.dll

出现该错误的原因是eclipse bug ,eclipse打开使用的是jre 不是jdk下面的jre ,因此未找到tools.jar


3.eclipse java api 访问hbase 失败
** 解决方案**

  • zookeeper工作是否正常
  • 防火墙是否关闭

背景

 hadoop体系中许多数据是存放在hbase中,为了便捷实用其中的数据,可以将数据迁移到hive中,通过hive sql 可以迅速便捷的获取并操作相应的数据,同时还可以实用hive sql实现一些mapreduce 操作。具体hive优势详见官网

目的

将hbase已存在的表数据迁移到hive中

操作步骤

版本环境

soft version
hive hive-1.1.0-cdh5.4.0
hbase hbase-1.0.0-cdh5.4.0

准备

首先要确保HIVE_HOME/lib 下HBase的jar包的版本要和实际环境中HBase的版本一致,需要用HBASE_HOME/lib/目录下得jar包:


hbase-client-1.0.0-cdh5.4.0.jar 
hbase-common-1.0.0-cdh5.4.0-tests.jar
hbase-common-1.0.0-cdh5.4.0.jar
hbase-protocol-1.0.0-cdh5.4.0.jar
hbase-server-1.0.0-cdh5.4.0.jar
htrace-core-3.0.4.jar
htrace-core-3.1.0-incubating.jar 
阅读全文 »

问题1

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. org/apach e/hadoop/hbase/mapreduce/TableInputFormatBase

** 解决方法:**


将hbase/lib下
hbase-common-1.0.0-cdh5.4.0-tests.jar
hbase-common-1.0.0-cdh5.4.0.jar
copy到hive/lib下面

问题2

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaExcep tion(message:MetaException(message:java.io.IOException: java.lang.reflect.InvocationTargetExc eption
** 解决方法:**


将hbase/lib下
htrace-core-3.0.4.jar
htrace-core-3.1.0-incubating.jar
copy到hive/lib下面

问题3

阅读全文 »