1.概念
Amazon s3全称Amazon Simple Storage Service,是一个对象存储,不是一个file system,所以在使用s3的时候,list dir会很慢
kv存储:从零开始写KV数据库:基于哈希索引
Amazon s3全称Amazon Simple Storage Service,是一个对象存储,不是一个file system,所以在使用s3的时候,list dir会很慢
kv存储:从零开始写KV数据库:基于哈希索引
安装openldap,参考:
1 | https://www.alibabacloud.com/blog/how-to-install-openldap-and-phpldapadmin-on-ubuntu-16-04_594318 |
先卸载干净
1 | sudo apt remove --purge slapd ldap-utils |
再安装
1 | sudo apt-get install slapd ldap-utils |
设置管理员密码,直接确定,后面配置admin的时候会再次配置
配置ldap admin账号密码
1 | sudo dpkg-reconfigure slapd |
配置dc
组织名
设置admin账号密码
database选择MDB
否
是
否
查看ldap状态
1 | sudo systemctl status slapd |
1.查看java进程,jps命令可以列出正在运行的虚拟机进程
1 | jps -l |
2.查看flume进程java虚拟机的统计信息
1 | jstat -gcutil 1028479 |
某springboot web服务进程java虚拟机的统计信息
1 | jstat -gcutil 29 |
对应指标的中文含义
S0:Survivor0的占用比例
S1:Survivor1的占用比例
E:新生代Eden区的占用比例
O:老年代的占用比例
M:方法区的占用比例
CCS:压缩类空间的占用比例
YGC:年轻代垃圾回收次数
YGCT:年轻代垃圾回收消耗时间
FGC:老年代垃圾回收次数
FGCT:老年代垃圾回收消耗时间
GCT:垃圾回收消耗总时间
3.查看jvm使用的是什么垃圾收集器
1 | java -XX:+PrintCommandLineFlags -version |
使用的是并行垃圾收集器
添加maven proxy
比如中央仓库
1 | https://repo1.maven.org/maven2/ |
比如cloudera的仓库
1 | https://repository.cloudera.com/artifactory/cloudera-repos |
maven-central
maven-cloudera
参考:从Paxos到Zookeeper分布式一致性原理和实践
使用的zk依赖是cdh5.16.2的3.4.5
1 | <!-- zookeeper --> |
Zookeeper提供了多种权限控制模式,分别是world,auth,digest,ip和super。
下面介绍模式scheme中的digest
使用如下语句对zk session添加权限,其中的username:password是账号密码
1 | zk1.addAuthInfo("digest", "username:password".getBytes()); |
如果操作zk节点没有权限的话,会抛出NoAuthException
1 | Exception in thread "main" org.apache.zookeeper.KeeperException$NoAuthException: KeeperErrorCode = NoAuth for /app6 |
代码
1 | package com.bigdata.zookeeper; |
没有权限的话,zkui也会报错
使用zookeeper-client访问
1 | lintong@master:/opt/cloudera/parcels/CDH/bin$ ./zookeeper-client |
查看,仍然没有权限
1 | [zk: localhost:2181(CONNECTED) 0] ls / |
设置密码并查看
1 | [zk: localhost:2181(CONNECTED) 3] addauth digest username:password |
别名是一个指针或者名称,可以对应一个或者多个具体的索引。
别名的创建,这样就给一个名为es的索引添加了一个别名:alias_test
1 | lintong@lintongdeMacBook-Pro ~ $ curl -XPUT 'http://master:9200/es/_alias/alias_test' |
添加了别名之后,在查询es索引的时候
1 | curl 'http://master:9200/alias_test/_search?q=_id:1' |
就等同于
1 | curl 'http://master:9200/es/_search?q=_id:1' |
别名的删除
1 | lintong@lintongdeMacBook-Pro ~ $ curl -XDELETE 'http://master:9200/es/_alias/alias_test' |
1,由cdh安装的kafka的默认存储路径如图所示在/var/local/kafka/data,一般会进行修改
kafka配置参考:apache kafka系列之server.properties配置文件参数说明
路径下文件如下
如果是多个路径的话,使用,进行分隔,比如/data01/kafka/data,/data02/kafka/data,注意data的权限需要是kafka用户和kafka组
对应kafka manager上的topic
具体的topic的目录下的文件
1 | lintong@master:/var/local/kafka/data/test_topic-0$ ls |
其中
187就是这个日志数据文件开始的offset
00000000000000000187.log是日志数据文件
可以使用解码命令查看日志片段中的内容
1 | /opt/cloudera/parcels/KAFKA/bin/kafka-run-class kafka.tools.DumpLogSegments --files ./00000000000000000187.log |
log.segment.bytes设置是1G,如果log文件的大小达到1G之后会生成另外一个log文件
该参数在1.0.1及以下的kafka有bug,可能会影响消费者消费topic的数据,但是不影响生产者,参考:https://issues.apache.org/jira/browse/KAFKA-6292
当kafka的broker读取segment文件的时候,会判断当前当前读取的segment的偏移量position在继续读取一段HEADER_SIZE_UP_TO_MAGIC
之后和该segment文件最大可读取的偏移量end之间的大小
当调高了log.segment.bytes=2G,注意此处2G=有符号INT的最大值=2147483647,有可能导致position+HEADER_SIZE_UP_TO_MAGIC
的大小超过int最大值,从而成为负数,小于end,返回null,并导致从log文件的末尾开始读取数据
参考kafka 1.0.1版本源码:https://github.com/apache/kafka/blob/1.0.1/clients/src/main/java/org/apache/kafka/common/record/FileLogInputStream.java
Paxos算法是一种提高分布式系统容错率的一致性算法
Paxos 算法的步骤是这样:
1.首先有两种角色,一个是“提议者”,一个是“接受者”。提议者可以向接受者提出提议,然后接受者表达意见。
2.因为存在多个提议者,如果同时表达意见会出现意见不一致的情况,所以首先需要尽快选出一个领导者,让意见统一。
3.然后领导者会给接受者发出提议,如果一个提议被大多数接受者接纳,这个提议就通过了。
1.Master选举
在分布式系统中,需要选举一台机器作为master或者leader。
这时候,可以选择一个跟节点,比如/master,然后多台机器同时像这个节点创建一个子节点/master/lock,利用zookeeper的特性,最终只有一台机器能否创建成功,成功的那台机器就是Master;
其他机器注册watch到这个子节点,然后当master宕机的时候,其他机器就会重新开始选举。