Arganzheng's Blog

stay hungry, stay foolish

设计模式分享

开发模式 (OOP) 面向对象编程 (DDD) 领域驱动开发 (TDD) 测试驱动开发 设计模式的8个基本原则 单一职责原则(Single Responsibility Principle): 一个类只负责一个功能领域中的相应职责(只做一类事情) 里氏代换原则(Liskov Substitution Principle): 任何基类可以出现的地方,子类一定可以出现 依赖倒转原则(Dependence Inversion Principle): 核心面向接口编程,依赖于抽象而不依赖于具体实现 接口隔离原则(Interface Segreg...

log4j2如何动态的创建logger和appender

背景 平台现在通过页面通过 SparkLauncher 提交Spark训练任务,随着而来的一个问题就是任务出错之后不知道哪里出问题,而日志在提交节点上,并且所有的任务混在一起打印日志,很不方便查看。能不能把 Spark 任务的日志分别打印在自己的日志文件呢? 解决方案 Spark2.x 有 redirectToLog 方法可以把任务日志重定向,但是 Spark1.x 没有提供这个功能,也不具备扩展性,所以只能自己解决了。 解决方案其实蛮简单的,就是不同的 task 创建属于自己的 Logger(即 loggerName 不一样), 每个Logger有自己的 FileAppender,FileAppender 指向自己的日志文件(文件名称用 taskId 命名...

Spark如何查看某个applicationId的executor日志

方法一:直接在界面上查看 如果你运行在 YARN 模式,你可以在 ResourceManager 节点的 WEB UI 页面根据 任务状态、用户名 或者 applicationId Search 到你的应用。然后 点击表格中 Tracking UI 列的History 链接;或者 点击相关的 ApplicationId 链接,进入到详情页面点击上面的 Tracking URL: History 链接 就进入到Spark作业监控的 WEB UI 界面,这个页面就是你 Spark 应用程序历史执行界面:例如http://bj01-prd-hadoop001.arganzheng.lan:18088/history/application_1537448...

Spark任务读取HDFS文件报Filesystem closed异常

现象 今天早上过来发现昨天晚上浏览器搜索样本生成任务出问题了。日志显示: [INFO ] 2018-10-18 22:03:41.443 [launcher-proc-1] spark-sample-generate - at com.argan.internt.ai.platform.datadriver.sample.plugin.DefaultPluginServiceImpl.loadPlugin(Default PluginServiceImpl.java:65) [INFO ] 2018-10-18 22:03:41.444 [launcher-proc-1] spark-sample-generate - at com.ar...

配置Nginx支持CORS的一个『坑』

前几天遇到前端跨域问题,之前也整理过这方面的问题:JS跨域问题及解决方案。第一种方案 Cross Origin Resource Sharing(CORS) 是目前主流的解决方案。 http { ... upstream scheduler { server 10.21.8.66:8080; } server { listen 80; server_name 10.21.8.66; access_log logs/host.access.log main; location / { root htm...

nginx proxy_pass 的一个『坑』

前几天在配置线上的 nginx 的时候,遇到一个诡异的问题,还搞了蛮久,记录一下。 首先配置入口:nginx.conf #user nobody; worker_processes 4; error_log /home/work/nginx/logs/error.log; pid /home/work/nginx/logs/nginx.pid; #Specifies the value for maximum file descriptors that can be opened by this process. worker_rlimit_nofile 51200; events { use epoll; worke...

maven如何deploy到多个repositories

背景 公司的私服部署在测试环境,跟线上的环境在网络上是物理隔离的。导致在线上无法使用 maven 编译,因为拉取不到测试环境的私服。只能在线下进行打包,然后通过终端上传到线上机器,问题是打出来的包往往有几十上百 M,上传速度超级慢,还容易断开出错。 解决方案 因为网络是物理隔离的,所以只能在线上部署一个maven私服了。部署过程很简单,这里不赘述。但是部署完成之后有一个问题,就是需要将二方库也同时 deploy 到线上环境的私服。并且为了保证能够给其他团队使用,还需要保证原来的 deploy 到测试环境的私服照常。 经过调研,最后决定采用 maven 的profile 机制来保证不同的环境deploy到不同的repositories。 具体如下: 首先修...

关于编码规范的一些建议

1、为什么要编码规范 无规矩不成方圆,无规范不能协作。 在百度,每次代码提交都强制编码规范检查,不通过则不允许提交。 提升编码质量 提升代码的可读性、可测性、可维护性 提升团队开发协作的效率 个人品牌 2、业界大公司的编码规范 谷歌 java编码规范中文版本 java编码规范英文版本: Google Java Style Guide Java编码规范IDEA插件 Java编码规范Eclipse插件 阿里巴巴 阿里巴巴Java开发手册 手册书籍版天猫官方店: 阿里巴巴JAVA开发手册最新版 阿里巴巴编码规范IDEA插件 阿里巴巴编码规范Eclipse插件 TIPS 1、IDE中一键格式化代...

AI基础架构:从大数据到深度学习

背景 这个分享来自于创新工场人工智能工程院副院长王咏刚给创新工场暑期深度学习训练营 DeeCamp的培训课程的第一节课。(ps:这个训练营太火了,只招生 36 名,总共有 1000 多计算机专业同学报名,同学们来自 CMU、北大、清华、交大等最好的大学),后续会给大家讲《TensorFlow 实战》、《自然语言处理》、《机器视觉》、《无人驾驶实战》等框架和算法方向的课。 课件分享:AI 基础架构——从大数据到深度学习 下面是我给创新工场暑期深度学习训练营 DeeCamp 讲的时长两小时的内部培训课程《AI 基础架构:从大数据到深度学习》的全部课件。全部讲解内容过于细致、冗长,这里就不分享了。对每页课件,我在下面只做一个简单的文字概括。 注:以下这个课件...

微服务架构学习

微服务架构 微服务的概念在2014年3月由Martin Fowler首次提出。 微服务架构解决的核心问题及其相应的开源组件如下所示: RPC框架 (Service-to-service calls) Spring Boot/Spring MVC Dubbo gRPC thrift 服务注册和发现 (Service registration and discovery) 注册中心 Eureka: 在 Netflix 经过大规模生产验证,支持跨数据中心。 Consul: 天然支持跨数据中心,还支持 KV...

×