0%

最近系统被扫出来还在使用老旧的log4j,需要升级到最新的log4j。但是在升级的发现,Java相关的日志处理库有log4j, log4j2,slf4j和logback,初一看确实有点头大,那么区别是啥呢?之前也大概知道一些,查找了大量相关资料,这里好好总结一下,相信你读完就会熟练掌握

WyhD6h

Log4J、Log4J2和LogBack的历史故事

使用过Log4J和LogBack的同学肯定能发现,这两个框架的设计理念极为相似,使用方法也如出一辙。其实这个两个框架的作者都是一个人,Ceki Gülcü,俄罗斯程序员。

Log4J 最初是基于Java开发的日志框架,发展一段时间后,作者Ceki Gülcü将Log4j捐献给了Apache软件基金会,使之成为了Apache日志服务的一个子项目。 又由于Log4J出色的表现,后续又被孵化出了支持C, C++, C#, Perl, Python, Ruby等语言的子框架。

阅读全文 »

3. Spark SQL

3.1 Hive、Shark和Sparksql

Hive:Hadoop刚开始出来的时候,使用的是hadoop自带的分布式计算系统 MapReduce,但是MapReduce的使用难度较大,所以就开发了Hive。Hive的出现解决了MapReduce的使用难度较大的问题,Hive的运行原理是将HQL语句经过语法解析、逻辑计划、物理计划转化成MapReduce程序执行。

Shark:2011年Shark诞生,即Hive on Spark。为了实现与Hive兼容,Shark在HiveQL方面重用了Hive中HiveQL的解析、逻辑执行计划、执行计划优化等逻辑;可以近似认为仅将物理执行计划从MapReduce作业替换成了Spark作业,通过Hive 的HiveQL解析,把HiveQL翻译成Spark上的RDD操作;Shark的出现,使得SQL-on-Hadoop的性能比Hive有了10-100倍的提高。

阅读全文 »

Spark

本文主要介绍Spark的核心知识点,

2. Spark 核心概念

主要介绍Spark核心概念RDD以及相应的API。

2.1 RDD介绍

RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象。代码中是一个抽象类,它代表一个弹性的、只读的、可分区的、支持并行计算的分布式数据集合,这个数据集的全部或部分可以缓存在内存中,在多次计算间重用。

  • 数据集:RDD 是数据集合的抽象,是复杂物理介质上存在数据的一种逻辑视图。从外 部来看,RDD 的确可以被看待成经过封装,带扩展特性(如容错性)的数据集合。

  • 分布式:RDD的数据可能在物理上存储在多个节点的磁盘或内存中,也就是所谓的多级存储。

  • 弹性:如果数据集的一部分数据丢失,则可以对它进行重建;具有自动容错,位置感知调度和可伸缩性,而容错性是最难实现的。

  • 大部分分布式数据集的容错性有两种:数据检查点(成本高)和记录数据的更新(依赖关系)。

阅读全文 »

随着weibo对外链的封锁越来越严重,导致很多图片无法访问,因此最近将所有的图片迁移到阿里oss。虽然weibo图片很多无法直接访问,好在设置referer为weibo.com之后都能正常访问,所以图片至少没有丢失。

新建阿里oss bucket

首先得利用阿里oss对象储存来存放图片,教程可以参考下面的博文:

本文基于Mac平台和Parallels软件,在其中创建三个Ubuntu系统,搭建了一个3个节点(1个master和2个Node)的K8s集群。下面的步骤没有特殊说明,都是需要在所有节点上分别执行的。也可以在一个虚拟机上执行完之后,复制当前虚拟机作为其他节点。

1. 虚拟机基础配置

基于Parallels虚拟机软件,在其中安装三个ubuntu系统,后续用于创建K8s集群的master节点和两个Node节点,三个节点均采用静态ip,具体配置如下:

  • Master节点:192.168.31.200 master

  • Node1节点:192.168.31.201 node1

  • Node2节点:192.168.31.202 node2

阅读全文 »

Jenkins 是一款开源的持续集成(DI)工具,广泛用于项目开发,能提供自动构建,测试,部署等功能。作为领先的开源自动化服务器,Jenkins 提供了数百个插件来支持构建、部署和自动化任何项目。

这里主要介绍如何使用docker安装Jenkins,以及如何通过Jenkins pipeline实现自动化部署。

1. 安装Jenkins

直接下载最新的docker镜像安装即可,

1
docker run -p 8080:8080 -p 50000:50000 -d -v /var/run/docker.sock:/var/run/docker.sock -v jenkins_home:/var/jenkins_home my-jenkins-jdk11

这里需要注意几点:

  • 需要将宿主机的/var/run/docker.sock映射到容器中,这样在容器内只要向/var/run/docker.sock发送http请求就能和Docker Daemon通信了,如果容器内有docker文件,那么在容器内执行docker ps、docker port这些命令,和在宿主机上执行的效果是一样的,因为容器内和宿主机上的docker文件虽然不同,但是他们的请求发往的是同一个Docker Daemon;可以参考https://blog.csdn.net/boling_cavalry/article/details/92846483

  • 将容器内目录挂载到宿主机的目录,这样我们可以在宿主机上对文件的修改同步到容器内。

阅读全文 »

记录下最近在R2s上安装配置OpenWRT的一些过程

1. 刷写固件

固件推荐:https://github.com/klever1988/nanopi-openwrt

关于ssr无法科学上网的问题,参考https://github.com/klever1988/nanopi-openwrt/issues/1146,将监视端口Lan取消勾选。

刷写过程:准备好sd卡和读卡器,插到电脑上,用balenaEtcher选择镜像文件(注意不用解压),然后直接写入即可。之后将sd卡插到R2s上即可

阅读全文 »

Spark

1. Spark基础

Spark是一种基于内存的快速、通用、可扩展的大数据分析引擎。

下图是Spark的发展历史,

阅读全文 »

前阵子组装了一个主机,然后在主机上搭建了一个Linux的服务器,这里主要记录其流程和碰到的问题。

1. 安装Ubuntu Server 20.04

制作U盘启动盘并安装

注意Ubuntu Server版本并没有图形界面,因此后续的安装都需要键盘配合完成。

阅读全文 »

年中的时候因为换工作的缘故,陆续参加了华为、蚂蚁、字节跳动、PDD、百度、Paypal的社招面试,除了字节跳动流程较长,我主动结束面试以外,其他的都顺利拿到了Offer。

最近时间稍微宽裕点了,写个面经,希望对大家找工作有所帮助。

面试体验

下面以时间先后顺序,分享下我在不同公司面试的体验。

阅读全文 »