在 scala和java混合编程的时候,需要添加一些额外的配置到pom中,才能将scala文件的class加到最终的jar中
1 | <build> |
打包的命令
1 | mvn clean scala:compile compile package assembly:single -Pproduction -Dmaven.test.skip=true |
或者
1 | <build> |
打包
1 | mvn package assembly:single |
在 scala和java混合编程的时候,需要添加一些额外的配置到pom中,才能将scala文件的class加到最终的jar中
1 | <build> |
打包的命令
1 | mvn clean scala:compile compile package assembly:single -Pproduction -Dmaven.test.skip=true |
或者
1 | <build> |
打包
1 | mvn package assembly:single |
参考:Thrift 连接 Java 与 Python,附 Java 通用工厂方法
上面这篇文章的例子是使用java client调用python server中的helloString方法来打印client传输过去的字符串
thrift文件,hello.thrift
1 | service Hello { |
Server端
生成Python server端代码
1 | thrift --gen py hello.thrift |
python server端代码,其中包括生成的hello文件夹中的代码,以及server代码
1 | from thrift.protocol import TBinaryProtocol |
Client端
生成java client代码
InputFormat在hadoop源码中是一个抽象类 public abstract class InputFormat<K, V>
1 | https://github.com/apache/hadoop/blob/master/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/InputFormat.java |
可以参考文章
1 | https://cloud.tencent.com/developer/article/1043622 |
其中有两个抽象方法
1 | public abstract |
和
1 | public abstract |
InputFormat做的事情就是将inputfile使用getSplits方法切分成List
1.getSplits方法负责将输入的文件做一个逻辑上的切分,切分成一个List
1.protobuf的github地址
1 | https://github.com/protocolbuffers/protobuf |
去releases下载需要的版本
1 | https://github.com/protocolbuffers/protobuf/releases |
选择2.5.0的版本
1 | https://github.com/protocolbuffers/protobuf/releases/tag/v2.5.0 |
下载
1 | wget https://github.com/protocolbuffers/protobuf/releases/download/v2.5.0/protobuf-2.5.0.tar.gz |
编译安装
1 | ./autogen.sh |
Amazon s3全称Amazon Simple Storage Service,是一个对象存储,不是一个file system,所以在使用s3的时候,list dir会很慢
kv存储:从零开始写KV数据库:基于哈希索引
比如如下的s3路径
1 | s3://BucketName/Project/WordFiles/123.txt |
其中BucketName是s3的桶名
bucketname/Project/WordFiles/是分区前缀prefix
123.txt是对象名字
s3://BucketName/Project/WordFiles/123.txt是键前缀
安装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 |
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 |
代码
CaseFormat是guava中用于字符串格式转换的工具,有以下几种类型
UPPER_CAMEL,比如 UpperCamel
UPPER_UNDERSCORE,比如 UPPER_UNDERSCORE
LOWER_CAMEL,比如 lowerCamel
LOWER_HYPHEN,比如 lower-hyphen
LOWER_UNDERSCORE,比如 lower_underscore
可以使用to进行转换
1 | // 从大写驼峰转小写驼峰 |
也可以使用converter进行转换
1 | Converter<String, String> converter = CaseFormat.UPPER_CAMEL.converterTo(CaseFormat.LOWER_CAMEL); |