智能运维:从基于规则到基于学习

随着企业发展,其应用架构也越来越复杂,从单一的应用,到多个应用共同组合形成服务,到云计算、微服务架构,再到目前流行的容器化。除了基础的服务应用外,也出现了专门用于采集、存储与分析用户信息的大数据处理应用。云数据中心规模快速增长,运维环境的异构和复杂化,导致日常运维工作需要付出的人力、时间成本越来越高。运维的发展已经经历了脚本时代——工具时代——自动化时代(DevOps),每一次的变迁都代表了运维需求的变化,运维技术的变革和运维人员效率的提高,随着大数据、机器学习和AI技术的飞速发展,运维需求也逐渐向智能化过渡。智能运维(AIOps)是自动化运维的拓展,其目的是进一步去除自动化运维中人为干扰,最终实现运维工作的无人化,完全自动化。

智能运维的内容主要有数据采集存储、异常自动检测、异常自动处理和数据的可视化。

数据采集存储

运维系统需要支持从机房设施、物理基础设施、数据中心网络、虚拟化资源池、云服务和应用到用户端日志的统一管理,实现多对象和多维度的集中监控。对于基础架构,需要采集的可能是性能数据,除了基础的CPU利用率、负载、%iowait,内存的利用率、页扫描、交换,磁盘的利用率、响应时间外,也可以使用处理器内包含的硬件计数器采集更详细的性能指标 …

Read More

离群点挖掘简述

引言

离群点是一个或一组明显不同于其他数据的数据点。Hawkins把离群点定义为“离群点是在数据集中偏离大部分数据的数据,使人怀疑这些数据的偏离并非由随机因素产生,而是产生于完全不同的机制。”

在大多数应用中,数据由一到多个程序产生,这些数据可以反映出系统的运行状态和被监测客体的相关数值。当测量、输入错误或系统运行错误时,或者客体出现异常行为,离群点就会产生。因此,离群点经常包含关于系统与实体异常特征的有效信息。现有数据挖掘研究大多集中于发现适用于大部分数据的常规模式,在许多应用领域中,离群点通常作为噪音而忽略,许多数据挖掘算法试图降低或消除离群点的影响。而在有些应用领域识别离群点是许多工作的基础和前提,离群点会带给我们新的视角。如在欺诈检测中,离群点可能意味欺诈行为的发生,在入侵检测中离群点可能意味入侵行为的发生。其他的一些应用场景包括信用卡诈骗、医疗诊断、执法、地球科学……

离群点的检测算法输出可以是两种类型之一:

  1. 大多数离群点检测算法,输出一个关于数据点的“离群性”得分。这个得分可以用于分析数据点的离群趋势。
  2. 第二种类型的输出是表示一个数据点是否离群的二进制标签。一些算法可能直接返回二进制标签,但离群得分也可转换成二进制标签。

早期对离群点研究的主要目的是消除离群点,那时离群点一般被视为“噪音”,但随着离群点分析的流行,发现“噪声”中存在有趣的数据。在真实的应用中,数据可能嵌入了大量的噪音,但大部分噪音对于分析是无趣的。

如下图所示,在(a …

Read More

基于SPARK的分布式网页近似度检测

前言

随着Web上数量的急剧增长,近似镜像网页的数量也在不断增加。近似镜像网页的存在,严重影响了搜索引擎的检索结果。如果我们能将搜集到的网页中的近似镜像网页去掉,可以提高搜集系统和索引系统效率,用户查询时也不会出现大量内容重复的网页。去除镜像网页即需要网页近似度检测算法。实验基于相似性连接实现了基于SPARK的分布式网页近似度检测,对5000个网页进行了相似度检测,试图找出所有相似的网页。实验使用的网页来源与人才招聘网站的电子简历,共有5000份,由于我们只关心其中的简历内容,因此需要去除简历内容外的HTML标签,网页样式、代码。在去除了无关内容后,即可进行近似检测,大数据环境下,数据量巨大,运用传统的方式进行相似性连接效率极低,实验选择了相似性连接查询作为底层的算法实现,作为一种分布式算法,实验选择了Spark作为分布式计算框架。

相似性连接查询,即查找相似的数据对象对,具有广泛的应用领域,例如相似网页检、实体解析、数据清洗和相似图像检索等。 在相似网页检测中,使用相似性连接等技术识别相似的网页,不但可以帮助网页搜索引擎执行聚焦爬行,提高搜索结果的质量和多样性,还可以识别垃圾邮件。在实体解析中,使用相似性连接技术,可以找到企业数据库里相似的顾客,匹配产品报价等。在数据清洗中,使用相似性连接技术,可以为不同数 据源集成提供一致、准确的数据。在相似图像检索 中,使用相似性连接技术检索出相似的图像,可以分析图像的来源 …

Read More

使用 iptables、ipset 的全局智能代理

首先,我这里的全局智能代理实现的功能主要有以下几点:

  1. 基于iptables的全局代理,在Linux下可以实现只需设置一次,所有的软件(无论是GUI还是CLI)都可以免设置自动使用这个代理。
  2. 基于ipset,加入所有的国内IP项,对所有tcp流量进行判断,避免对国内的服务进行代理,一方面可以节省服务器流量,另一方面可以享受国内ip的优势,比如国内的版权视频、音乐,最后,避免被国内一些和政府有合作的IT企业发现你使用了代理。
  3. iptables把需要代理的tcp流量交给shadowsocks-libev中的ss-redir,让它与代理服务器通讯。

让我们开始吧,在最开始,首先要说明的是:这份教程只适用于想要让你的Linux设备使用代理的用户,同时,下文的所有内容假设你运行的是Arch Linux。

设置 iptables

首先,在/etc/iptables目录下创建一份新的规则:

# Transparent SOCKS proxy

*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING …

Read More

抓取网页中所有PDF链接并下载的Python脚本

说点什么

没什么好说的,工具脚本,代码都在下面,可能改一下后可以适用于其他地方。

代码

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Thu Jul  6 11:04:53 2017

@author: chih
"""

from bs4 import BeautifulSoup
import requests

BASE_URL = 'http://www.vldb.org/pvldb/vol10.html'

class VldbCrawler:

    def __init__(self, base_url=BASE_URL):
        self.base_url = base_url

    def fetch_download_link(self …

Read More

Spark SQL 笔记

Spark SQL Overview

特性:

  • Spark SQL是Apache Spark中的一个新模块
  • 将关系处理(tables with rows/columns)与Spark的功能编程API相集成
  • 通过 SQL 操作 RDDs, 同时提供多种语言绑定
  • 数据源集成:Hive, Parquet, JSON,and more
  • 提供 JDBC/ODBC 接口供外部程序调用(商业智能、olap分析)

目标:

  • 写更少的代码
  • 读更少的数据
  • 获得更高的性能

Spark SQL in Spark

Screenshot_20170522_193655

  • Spark SQL was first released in Spark 1.0 (May, 2014)

Relationship …

Read More

Spark SQL

Spark 简介

Hadoop 伴随着大数据的兴起已有十年时间,被认为是大数据处理的首选解决方案, 它分别提供HDFS和MapReduce解决了大数据(无法在单台机器上存储与处理的数据)的可靠存储和处理,但对于一些场景, MapReduce并不是十分高效,其一,MapReduce的抽象层次低,仅提供了map和reduce两个操作,对于应用需要编写大量代码;其二,一个job只包括了map和reduce两个阶段,想要完成复杂的工作,就必须串联一系列MapReduce作业,但每一步的输出数据必须存储到HDFS,导致io操作繁重,时延较高,只适合批处理,不适合实时处理和迭代计算。

Apache Spark是一个新兴的大数据处理引擎,它允许开发者使用有向无环图 (DAG) 开发复杂的数据操作,内部使用一个集群上的分布式内存抽象 (RDD) ,简化了对分布式数据的编程复杂性。RDD 提供了两类操作,转换和动作,转换在原有 RDD 上通过一些操作定义了一个新的 RDD ,包括map, flatMap, filter, union, sample, join, groupByKey, cogroup, ReduceByKey, cros, sortByKey, mapValues等 …

Read More