《一》

1.流立方引擎测试脚本,传入数据需要自己构造pojo,并使用fastjson转换为json报文进行保送。保送测试页面有bug,具体的情况需要自己查看一下日志。
2.安装kafka:安装包大概50MB注意,以免下载的安装包没有zk的运行依赖包。
3.参考博客:https://www.cnblogs.com/hei12138/p/7805475.html
4.安装kafka需要先安装zookeeper,安装zookeeper的时候出现java不能分配内存,原因是zookeeper启动脚本中占用内存过高导致,将Xxm512M改小问题解决。
5.最新版本2.12的scala,环境仅支持jdk1.8(主要是因为使用scala和java编写的)。
6.测试需要加入相关的依赖jar包,注意版本自己匹配。
7.安装压测工具Jmeter。参考:https://www.jianshu.com/p/673766f12ed2
8.需要在windows和linux分别安装,注意官网现在的Jmeter只兼容jdk1.8,且Jmeter需要配置环境变量(类似Java环境变量的配置)。
9.Hadoop为我们提供了一个可靠的共享存储和分析系统,HDFS实现数据的存储,MapReduce实现数据的分析和处理。
10.Jps -l 查看当前启动的应用和端口号
11.在终端下输入命令Asdam:在asadm下查看集群节点情况
12.在终端下输入命令Asmonitor :在Monitor下查看Aerospike集群信息,如节点个数,内存使用情况。
13.流处理引擎处理报文遗留问题的解决:daemon中的包地址为全局区域构建的包地址
Processor中配置文件的包地址为计算包的地址。另外as中的存储方式有两种,一种是磁盘存储,一种是内存存储。这次问题出在磁盘中保存的数据影响报文的处理,在清除内存和重启as后问题解决。
14.点百趣周三会议记录:
工单定期派发
关联触发规则(同法人及相关商户)同步黑名单
根据多种风险类型进行规则的制定(多种规则优先级排列);
信息部分我司负责,工单部分由甲方完成开发

甲方订单确定的方式:时间 卡号 流水号 确定一笔订单
1.字段
2.加密
3.批量人工派发需要校验同商户的核查单
4.黑名单(商户号)
5.调查信息:风险定性,结案陈词,处理情况:添加字段(处理情况)。
6.分支机构:只看到自己相关信息(待处理,历史)核查单,交易信息,商户信息,商户风险。
7.历史核查单不改动,待处理的核查单进行派发功能的设计
安装hadoop(包括Hadoop Common、HDFS、MapReduce)
1.下载相关安装包(环境在jdk1.6以上)http://hadoop.apache.org/common/releases.html
2.配置hadoop中的配置文件。

《二》

1.hadoop使用免密登陆的实现方式 :
sudo useradd hadoop |sudo passwd hadoop|su hadoop|cd /home/hadoop|ssh-keygen-trsa|cd.ssh|catid_rsa.pub>>authorized_keys|chmod600 authorized_keys
最后主备机之间的免密登陆可以采用本地机器执行命令如:ssh-copy-id -i ~/.ssh/id_rsa.pub dss@10.164.194.42, 将公钥文件传输的远程机器,并生效
***一定要注意ssh的免密生效严格控制文件的权限,不要 乱更改文件的权限(ssh文件以及所在的文件夹)
创建虚拟机集群:
在同一网段下配置不同的虚拟机ip:
vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
修改IPADDR参数
开启hadoop.遇到namenodes 已经启动,先执行./stop-all.sh 再执行./start-all.sh
格式化namenode需要删除相关目录下的文件重新格式化。
子节点需要修改的内容:
hadoop-2.7.3/etc/hadoop/mapred-site.xml

mapreduce.jobhistory.address
slave1:10020

mapreduce.jobhistory.webapp.address
slave1:19888

将以上的配置改成从机的hostname,其他配置文件和主机一致。主机Slaves配置文件应该包含主从全部节点。
主机修改的文件有:
hadoop-2.7.3/etc/hadoop/hadop-env.sh
hadoop-2.7.3/etc/hadoop/yarn-env.sh
hadoop-2.7.3/etc/hadoop/core-site.xml
hadoop-2.7.3/etc/hadoop/hdfs-site.xml
hadoop-2.7.3/etc/hadoop/mapred-site.xml
hadoop-2.7.3/etc/hadoop/slaves
hadoop-2.7.3/etc/hadoop/yarn-site.xml
特别是最后一个关乎性能:

yarn.nodemanager.resource.memory-mb
65536
Amount of physical memory, in MB, that can be allocated for containers.


yarn.scheduler.maximum-allocation-mb
65536
Amount of physical memory, in MB, that can be allocated for containers.


yarn.scheduler.minimum-allocation-mb
1024


yarn.scheduler.maximum-allocation-vcores
32


yarn.nodemanager.resource.cpu-vcores
32

其中包括内存硬盘的配置以及线程数量的配置。
启动智能学习平台 需要先启动portal再启动workflow,运行所需的最小内存占用为 JAVA_OPTS=”-XX:PermSize=512m -XX:MaxPermSize=1024m -Xms1024m -Xmx2048m”

使用sqoop迁移数据库的时候需要考虑mysql-connector-java-5.1.35版本问题导致迁移失败。

步骤1:添加环境变量: export HCAT_HOME=$HIVE_HOME/hcatalog
步骤2:需要开启hive的metastore服务(开启步骤查看1.4),同时在hive-site.xml中指定hive.metastore.uris的ip,还需要开启metastore服务。


hive.metastore.uris
thrift://192.168.1.188:9083

步骤3:进入sqoop的bin目录下执,执行以下命令。

./sqoop import -Dmapreduce.map.memory.mb=20000 -Dmapreduce.map.java.opts=-Xmx20000m –connect jdbc:oracle:thin:@bsfk-jpsdb.jf.prd:1521:jpsdbsty –username bsfk_query –password Knjf8Ut9Qn –table POSPADM.URMTMCNT –hive-import –hive-database hive_db –hive-table urmtmcnt -m 8 –split-by MERC_ID –num-mappers=10

使用pl/sql连接oracle.
1、首先到Oracle网站下载Instant Client :
http://www.oracle.com/us/solutions/index-097480.html
解压之后的文件夹叫:instantclient_11_2.可以放在本地磁盘任意目录下.例如:D:/instantclient_11_2
2、在D:/instantclient_11_2目录下新建目录network,在network目录下再建admin目录,在admin目录下新建文件tnsnames.ora,打开写入如下内容:
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.6.8.10 )(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl )
)
)
其中ORCL是远程数据库在本地的主机名,10.6.8.10是远程服务器的IP地址,orcl是远程数据库的名称。
3、添加一个环境变量,名为TNS_ADMIN,值为tnsnames.ora文件所在路径。通过(我的电脑–属性–高级–环境变量–新建)来新增环境变量。
4、下载并安装PL.SQL.Developer配置应用配置tools->preferences->connection

Oracle Home
D:/instantclient_11_2

OCI library
D:/instantclient_11_2/oci.dll
配置完成后关闭PL/SQL ,再重启.
主机名就会出现在PL/SQL Developer的列表里,输入用户名密码,就可以登录远程oracle 数据库。

《三》

1.点百趣项目分支下载:
offline_standard/dianbaiqu
ssh:git@10.100.1.15"">//git@10.100.1.15/extra/frms-extra-standard.git
反欺诈分支,缺少jfpal的jar包
3rd_pay/dianbaiqu
ssh:git@10.100.1.15"">//git@10.100.1.15/rd/frms-mgr-offline.git

2.查看日志
jps -l 查看当前启动的程序
pwdx 程序进程号 查看进行的路径
tail -n(行数)源文件 >目标文件
sz 创建的log文件,下载log文件
rz 上传文件
vi 文件 /查找关键字 n:下一个关键字

3.解读源码的问题
@controller 控制器(注入服务)
用于标注控制层,相当于struts中的action层
@service 服务(注入dao)
用于标注服务层,主要用来进行业务的逻辑处理
@repository(实现dao访问)
用于标注数据访问层,也可以说用于标注数据访问组件,即DAO组件.
@component (把普通pojo实例化到spring容器中,相当于配置文件中的


泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller@Services等的时候),我们就可以使用@Component来标注这个类。

4.Hadoop节点平衡速度慢,导致个别节点资源占用过大
解决方法:
如果没在用系统,可以把setBalancerBandwidth 设置大点,这样平衡的快些
hdfs dfsadmin -setBalancerBandwidth 10485760
nohup sh start-balancer.sh -threshold 5 &

5.hadoop fs -rm -r /qs/dw_data/1/tmp_1532921234308 删除hadoop目标文件
6.智能决策平台的使用:
操作人员可以将建模分析平台中产出的机器学习模型部署到智能决策平台中,并配置实时计算的计算脚本以及实时特征采集的特征脚本,然后进行发布,最终使得机器学习模型在生产环境中生效。(理解双引擎的概念)
使用智能决策平台,首先要明白几个关键词定义
特征管理:特征脚本包通过调用全局变量,可对特征进行增删改等操作
全局区域-数据定义:pojo包;
全局区域-导入:导入java import
全局区域-方法:在java环境下模型和导入两种方式生成的jar包
特征脚本包:取规则平台计算的脚本集合作为条件进行比对。
7.根据模型的特征列所代表的含义去编写规则平台的特征脚本和智能决策。
模型名称的含义由建模组给的sql进行判断:
card_amount_max 5min card_amount_min 10min 30min 1h 6h 24h 3d
select t1.log_no,
max(t2.txn_amt) as card_amount_max_5min,
min(t2.txn_amt) as card_amount_min_5min
from t1
left join t2
on t1.CRD_NO_ENC=t2.CRD_NO_ENC
and unix_timestamp(t1.txn_tm,’yyyyMMddHHmmss’)-unix_timestamp(t2.txn_tm,’yyyyMMddHHmmss’)>0
and unix_timestamp(t1.txn_tm,’yyyyMMddHHmmss’)-unix_timestamp(t2.txn_tm,’yyyyMMddHHmmss’)<605
and t1.txn_typ=’N’
and t2.txn_typ=’N’
and t1.TXN_CD=’2010020’
and t2.TXN_CD=’2010020’
group by t1.log_no
分析为:该卡历史交易金额最大值、最小值
添加脚本包并编写脚本,编写特征脚本并验证通过保存:
new MemcacheMethod() {
/

     * invoke 处理入参,返回最后的特征值
     * 入参 Map 为业务传输的原始数据
     * 入参 MemCachedItem 为流立方中获取的某维度+某业务线+某维度值下脚本集合

/
@Override
public Object invoke(Map map, MemCachedItem memCachedItem) {
if (memCachedItem == null) {
return 0;
}
//TimedItems 为具体的一个计算脚本
TimedItems obj = (TimedItems) memCachedItem
.getRaw(“min_amt_less10”);
if (obj == null) {
return 0;
}
//通过计算脚本根据时间跨度获取具体某段时间内的具体方法数值
CountNumber value = (CountNumber) obj.getRaw(
map.get(“dd_term_tran_dat_tim”), “10pm”);
if(value == null){
return 0;
}
//取值且返回
return value.value();
}
/

  • getMemcachedKey 处理入参,返回值为具体某一维度值
      * 入参 Map 为业务传输的原始数据
      */
      @Override
      public String getMemcachedKey(Map map) {
          return map.get("卡号对应的key");
      }
    
    }
    完成后进入模型管理,模型由建模人员完成,我们导入,然后对模型特征、特征脚本进行匹配,如果模型特征和特征脚本名称不一致需手动匹配。
    完成以上工作后,模型可以上线被调用。

全局方法:用于特征脚本的编写中,主要为了独立出多个特征之间的共同部分

模型上线之后,进行决策引擎的调用:
EngineTest.java
com.alibaba.fastjson.JSONException: autoType is not support. cn.com.bsfit.frms.obj.AuditResult
Main函数添加:
ParserConfig.getGlobalInstance().addAccept(“cn.com.bsfit.frms.obj.”);
调用决策引擎遇到的问题:
1.决策引擎配置文件:配置机器模型地址(配置智能决策平台地址+/models/online?withBlob=true)
2.决策平台引擎不使用密码加密,全局区域的包地址不能注释掉。
3.关掉不需要的数据服务
4.引擎license要适配.