# hadoop集群环境安装

环境信息

主机名|ip|操作系统|hadoop版本

——–|——-|——-|—–

hadoop-master|172.16.23.153|CentOS Linux release 7.5.1804 (Core)|2.5.0

hadoop-slave1|172.16.23.154|CentOS Linux release 7.5.1804 (Core)|2.5.0

配置主机名

hadoop-master
[root]
hostnamectl set-hostname hadoop-master
su
hostname
cat <<EOF >> /etc/hosts
172.16.23.153 hadoop-master
172.16.23.154 hadoop-slave1
EOF

Read the rest of this entry

背景

某项目生产环境负载过高,现象为系统响应慢,命令执行卡顿甚至无法通过ssh登录到服务器。

排查

uptime出系统当前负载情况

# uptime
 16:09:11 up 38 days,  5:40,  2 users,  load average: 73.33, 73.72, 73.66

uptime是检查当前系统负载情况非常重要的命令,它显示了当前操作系统从开机到当前运行了多长时间,当前有几个登录用户,最重要的是告诉我们当前系统的负载情况(load average),三个数字表示了系统在1分钟内,5分钟内,15分钟内的负载情况,平均负载表示当前系统平均运行的线程数,这些线程包括正在运行线程(runnable)和不可中断(uninterruptable)线程,正在运行线程表示当前正在使用CPU或者等待使用CPU的线程,不可中断线程指当前在等待IO的线程,比如当前正在读取文件线程,这样解释可能比较难懂,简单说

  • 对于一个CPU系统,如果负载是1,表示当前CPU使用率是100%,如果超过1表示当前处于超载状态,有线程需要等待。
  • 对于多核CPU系统,如果CPU个数是N,那么负载如果=N表示所有的CPU使用率都处于满载状态,如果>N表示处于超载状态,如果

Read the rest of this entry

背景

如果你是通过rke安装kubernetes,并且rke版本在v0.2.0之前,或者通过rancher安装,并且rancher版本在Rancher v2.0.14、v2.1.9之前,默认的证书有效期是1年,这实在是个大坑,之后的版本rancher更改为10年,证书过期后对现有的服务不影响,服务依然能正常使用,但无法部署新的服务,并且api server不能提供服务,api server如果无法使用,集群基本就废了。

通过openssl工具查看证书有效期

openssl x509 -in /etc/kubernetes/ssl/kube-apiserver.pem -noout -dates
notBefore=Jan  11 10:17:38 2019 GMT
notAfter=Jan  11 10:17:39 2020 GMT

如果当前日期在notAfter之后,那么很不幸,你的证书过期了,此时kubectl命令不可用

$ kubectl get nodes
Unable to connect to the server: x509: certificate has expired or is not yet valid

Read the rest of this entry

介绍

前面两篇介绍sonar的安装和配置,并且简单介绍了下如何使用,可以点击以下连接回顾下

根据前面的介绍,我们知道,你可以通过maven工具或者sonar-scanner将代码上传到sonar,如果你只是搭一个demo自己测试自己玩,这样一点问题都没有,如果你准备搭建一个代码质量平台,希望推广到全公司,给所有的人用,不是把环境搭起来甩一篇使用文档就完事了,所有的工具都是这样的,给你的只是砖头,具体要盖平房还是高楼取决于用砖头的人。

目标

这次我们的目标希望能达到以下目的

  • 自定义前端界面,员工登录后可以提交代码质量检测请求,请求内容比较重要的两个字段就是git地址和git分支。
  • 可以通过前端界面跳转到sonar系统中对结果进行查看。

Read the rest of this entry

介绍

上一篇中,介绍了如何安装部署sonar,这一篇介绍如何配置sonar。

权限

每个项目都可以设置一个权限模板(Permission Templates),权限模板里可以对用户和组分配不同的权限,采用矩阵方式进行配置,以下就是sonar默认的权限模板

默认的权限模板不是很合理,其中群组sonar-users可以看所有的项目,因为所有sonar上的用户都属于这个群组,所以大家是可以互相查看对方项目的,很不合理。

Read the rest of this entry

sonar介绍

sonar是一款开源的代码质量检查工具,基本支持所有流行的编程语言。平时我们自己做代码review费时费力而且对审查的人要求比较高,一般是资深开发人员进行审查,有了sonar后上万行代码片刻之间就可以完成review,事无巨细的给你指出代码中存在的问题还能指导你如何进行修复。

在sonar中,问题分为三种,每种按照严重程度分为A-E五个级别,三种问题分别为:

  • bug,sonar能识别出非运行时bug,比如空指针没处理等。
  • Vulnerabilities(漏洞),存在的安全问题
  • bad smell(坏代码),不规范的代码,这个可以帮助我们改正我们代码中的一些不良习惯。

以下是sonar检测完后的报告:

Read the rest of this entry

背景

去年我给一个项目配了ohs的ssl证书,将他们的门户升级到https,并且写了一篇博文记录配置过程,这也是百度能搜索到的唯一一篇介绍ohs配置https的文章,这篇文档写的不够详细,而且里面是通过owm这个gui工具进行配置,在linux下使用gui终归是不大方便。最近给另外一个项目配置https,遇到了新问题,也用上了新工具,所以就再写一篇记录下。

你需要提前了解的

https

我们都知道http是明文协议,如果你在路由器那边进行抓包就能看到http完整的报文信息,我们平时在网站进行登录的时候输入的用户名密码,如果是用http协议发送给后台被抓包后将直接暴露无遗,因此http是一种不安全的协议,http导致另外一个问题就是广告泛滥,因为是明文,运营商可以拦截服务器返回的报文进行修改,将广告插入到页面中,我们平时看到的屠龙宝刀 点击就送 极品装备 一秒刷爆有时候不是网站本身的广告,而且运营商插的广告。

因为http有如此多的问题,因此有了https,https就是http+ssl,使用ssl协议对http报文进行加密,保证报文的安全性和完整。本次客户配置https的初衷也是发现他们部分用户无法登录门户,排查下来原因是这些用户用的路由器都是同一个品牌,该品牌路由器会对带下划线的http header进行过滤,刚好接口的token名称带有下划线被过滤了,并且该品牌路由器厂商已经倒闭无法提供技术支持(可见一个靠谱的供应商有多重要),给客户提的方案就是升级到https这样路由器就无法进行拦截过滤。

Read the rest of this entry

背景

客户在没有通知的情况下对12c rac数据库进行重启操作,重启后数据库无法启动

排查

通过sql查询alert日志路径

[grid]
[grid@Portal-DB-Node01 ~]$ sqlplus / as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Thu Feb 6 21:21:02 2020
Copyright (c) 1982, 2016, Oracle.  All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL> show parameter dump
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
background_core_dump                 string      partial
background_dump_dest                 string      /u01/app/grid_home/rdbms/log
core_dump_dest                       string      /u01/app/grid/diag/asm/+asm/+ASM1/cdump
max_dump_file_size                   string      unlimited
shadow_core_dump                     string      partial
user_dump_dest                       string      /u01/app/grid_home/rdbms/log

alert日志位于

Read the rest of this entry

Markdown

相信现在应该没有人没听过markdown,如果你没听过,你该反思下,如果你没用过,建议你从现在开始尝试。markdown是一种基于文本的描述语言,什么意思呢,通俗的讲就是你只要靠键盘就能完成文章的排版,并且可读性很高,Markdown因为其超级简单的语法(十分钟就能入门),能够摆脱万恶的鼠标,友好的编辑界限,灵活的扩展性等特点迅速在开发人员间流行起来,成为文档编写首选工具,github的README文档默认使用markdown。

markdown主要是用来写文档,在word的时代,写文档对于开发人员就是折磨,“文档十分钟,排版一小时”是很常见的,不仅如此排出来往往还是一坨狗屎,有了markdown之后,情况就变了,你只需用md描述你的格式,具体排版就交给工具。

在写文档上,md描述的是文档的格式,但作为一门这么优秀的描述语言,可不仅仅能描述格式这么简单。

Markdown绘制流程图

我们怎么描述一个流程?用自然语言描述就是“A提交到B,B审批后流转到C,C审批后流程结束”,用流程编排工具就是在界面上拖拽各种节点将每个节点按照流程流转规则连接,用程序描述就是后台需要将流程信息结构化存储,并且借助流程引擎驱动流程。既然markdown是描述语言,能不能用markdown来描述流程,肯定是可以的,我们拍脑袋想一个语法:

Read the rest of this entry