BigData

平时多流汗,战时少流血!

一个完整机器学习项目的实践流程

1 获取语料 已有语料:业务部门、公司积累大量的文本数据 网上下载、抓取语料:可以通过爬虫自己去抓取一些数据,然后进行加工。 2 语料预处理 语料预处理大概会占到整个50%-70%的工作量,通过数据洗清、分词、词性标注、去停用词四个大的方面来完成语料的预处理工作。 a.语料清洗:就是在语料中找到我们感兴趣的东西,把不感兴趣的视为噪音的内容清洗删除,如:对于爬取的网页内容,需要去除广告...

海量数据去重之SimHash算法简介和应用

使用SimHash进行海量文本去重

源文出处:https://www.cnblogs.com/maybe2030/p/5203186.html 在之前的两篇博文分别介绍了常用的hash方法([Data Structure & Algorithm] Hash那点事儿)以及局部敏感hash算法([Algorithm] 局部敏感哈希算法(Locality Sensitive Hashing)),本文介绍的SimHa...

Scrapy安装与创建项目

Scrapy爬取静态页面数据

Scrapy 安装 pip install scrapy 以上会报超时错误,所以增加了国内镜像,如下 pip install --index https://pypi.mirrors.ustc.edu.cn/simple/ scrapy 还是会有超时现象,不过重新试一次就自动地把所有相关的包安装成功,最后终端显示如下提示,说明安装成功: Installing collecte...

Scrapy的初步认识

Scrapy 的初步认识 Scrapy 是一个高级的 Python 爬虫框架,它不仅包含了爬虫的特性,还可以方便的将爬虫获取的数据保存到 csv、json 等文件中。 Scrapy 使用了 Twisted 作为框架,Twisted 是事件驱动的,对于会阻塞线程的操作(访问文件、数据库等),比较适合异步的代码。 Scrapy 整体架构 Scrapy 数据流是由执行的核心引...

Kafka常见问题总结

在使用 Kafka 时,我们经常会遇到的问题有哪些? 会不会丢消息? Offset 怎么保存? Consumer 重复消费问题怎么处理? 如何保证消息的顺序? 数据倾斜怎么处理? 一个 Topic 分配多少个 Partiton 合适以及修改 Partiton有哪些限制? 如何保证消息不丢失? 消息不丢失对于消息队列来说至关重要,但要实现这一点也是非常困...

Spark常用算子实践总结

mapPartitions 与 map 的区别 与 map 方法类似,map 是对 rdd 中的每一个元素进行操作,而 mapPartitions(foreachPartition) 则是对 rdd 中的每个分区的迭代器进行操作。如果在 map 过程中需要频繁创建额外的对象,例如将 rdd 中的数据通过 JDBC 连接写入数据库,map 需要为每个元素创建一个 Connection 链接,...

Flume案例——日志分析采集系统

概述 大数据平台每天处理业务系统产生的大量日志数据,一般而言,这些系统需要具有以下特征: 构建业务系统和日志分析系统的桥梁,并将它们之间的关联解耦; 支持近实时的在线分析系统和类似于 Hadoop 之类的离线分析系统; 具有高可扩展性。即:当数据量增加时,可以通过增加节点进行水平扩展。 日志分析采集系统模块 数据采集模块:负责从各节点上实时采集数据,选用 F...

Flume安装及配置

Flume 提供了大量内置的 Source、Channel 和 Sink 类型。而且不同类型的 Source、Channel 和 Sink 可以自由组合—–组合方式基于配置文件的设置,非常灵活。比如:Channel 可以把事件暂存在内存里,也可以持久化到本地硬盘上。Sink 可以把日志写入 HDFS、HBase,甚至是另外一个 Source 等。 安装 下载源码包到 /us...

Flume核心概念

简介 Flume 是一个分布式、可靠、高可用的服务,它能够将不同数据源的海量日志数据进行高效收集、汇聚、移动,最后存储到一个中心化数据存储系统(HDFS、 HBase等)中,它是一个轻量级的工具,简单、灵活、容易部署,适应各种方式日志收集并支持 failover 和负载均衡。 功能 支持在日志系统中定制各类数据发送方,用于收集数据。 Flume 提供对数据进行简单处理,并写到...

Spark编程基础

准备知识 2017-12-19-Hadoop2.0架构及HA集群配置(1) 2017-12-24-Hadoop2.0架构及HA集群配置(2) 2017-12-25-Spark集群搭建 2017-12-29-Hadoop和Spark的异同 2017-12-28-Spark-HelloWorld(Spark开发环境搭建) Spark快速入门 Spark快速入门-1...

Kafka进阶

内容为将要在公司分享Kafka的PPT,推荐在wifi环境下阅读 本次分享内容包括 1.Message delivery guarantee 分场景进行可能性的描述 2.Partition的重要性及在什么情况下会Rebalance 3.Kafka Stream介绍 4.运行一下Kafka Stream WordCount的demo ...

Kafka基础知识

如有不当之处请指出,我后续逐步完善更正

Spark快速入门-6-Spark算子的选择

知识点 https://www.cnblogs.com/arachis/p/Spark_API.html 使用reduceByKey/aggregateByKey替代groupByKey 使用mapPartitions替代普通map 使用foreachPartitions替代foreach 使用filter之后进行coalesce操作 使用repartitionAn...

Spark快速入门-5-Spark性能优化指南-高级篇

前言 继基础篇讲解了每个Spark开发人员都必须熟知的开发调优与资源调优之后,本文作为《Spark性能优化指南》的高级篇,将深入分析数据倾斜调优与shuffle调优,以解决更加棘手的性能问题。 数据倾斜调优 调优概述 有的时候,我们可能会遇到大数据计算中一个最棘手的问题——数据倾斜,此时Spark作业的性能会比期望差很多。数据倾斜调优,就是使用各种技术方案解决不同类型的数据倾斜问题,...

Spark快速入门-4-Spark性能优化指南-基础篇

前言 在大数据计算领域,Spark已经成为了越来越流行、越来越受欢迎的计算平台之一。Spark的功能涵盖了大数据领域的离线批处理、SQL类处理、流式/实时计算、机器学习、图计算等各种不同类型的计算操作,应用范围与前景非常广泛。在美团•大众点评,已经有很多同学在各种项目中尝试使用Spark。大多数同学(包括笔者在内),最初开始尝试使用Spark的原因很简单,主要就是为了让大数据计算作业的执行...

Spark快速入门-3-Spark的算子总结

Spark的算子的分类 Transformation 变换/转换算子:这类算子操作是延迟计算的,也就是说从一个RDD 转换生成另一个 RDD 的转换操作不是马上执行,需要等到有 Action 操作的时候才会真正触发运算。这种变换并不触发提交作业,完成作业中间过程处理。 Action 行动算子:这类算子会触发 SparkContext 提交 Job 作业,并将数据输出 Spark ...

Spark快速入门-2-Spark的编程模型

准备 2017-12-19-Hadoop2.0架构及HA集群配置(1) 2017-12-24-Hadoop2.0架构及HA集群配置(2) 2017-12-25-Spark集群搭建 2017-12-29-Hadoop和Spark的异同 2017-12-28-Spark-HelloWorld(Spark开发环境搭建) 相关概念 2018-01-15-Spark...

Spark快速入门-1-Spark on Yarn Job的执行流程简介

准备 2017-12-19-Hadoop2.0架构及HA集群配置(1) 2017-12-24-Hadoop2架构及HA集群配置(2) 2017-12-25-Spark集群搭建 2017-12-29-Hadoop和Spark的异同 2017-12-28-Spark-HelloWorld(Spark开发环境搭建) 相关概念 在介绍一个典型的 Spark Job...

Scala快速入门-11-常用集合操作

知识点 所有的集合都扩展自Iterable特质 集合有三大类,分别为序列、集和映射 几乎所有集合类,Scala都同时提供了可变和不可变的版本 Scala列表要么是空的,要么拥有一头一尾,其中尾部本身又是一个表列 集是无先后次序的集合 用LinkedHashSet来保留插入顺序,或用SortedSet来按顺序进行迭代 +将元素添加到无先后次序的集合中;+:和:+...

Scala快速入门-10-模式匹配与样例类

知识点 mathch表达式是一个更好的switch,不会有穿透到下一个分支的问题 如果没有模式能够匹配,会抛出MatchError,可以用case _ 模式来避免,相当于Java中的default 模式可以包含一个随意定义的条件,称做守卫 可以匹配数组、列表、元组等模式,然后将匹配到不同部分绑定到变量 样例类及密封类的模式匹配 用Option来存放可能存在也可能不...

Scala快速入门-9-高阶函数

知识点 作为值的函数 创建匿名函数 带函数参数的函数 闭包 柯里化 函数 在Scala中,函数是“头等公民”,可以在变量中存放函数 scala> def fun(msg: String) {println(msg)} fun: (msg: String)Unit scala> val f = fun <console>:8: ...

Scala快速入门-8-特质

知识点 Scala和Java一样不允许类继承多个超类,特质解决这一局限性 类可以实现任意数量的特质 当将多个特质叠加在一起时,顺序很重要,其方法先被执行的特质排在更后面 Scala特质可以提供方法和字段的实现 特质要求实现它们的类具备特定的字段、方法或超类 特质可以同时拥有抽象方法和具体方法,而类可以实现多个特质 当做接口使用的特质 Scala特质完全...

Scala快速入门-7-继承

知识点 继承类 extends 重写方法时必须用override 只有主构造器可以调用超类的主构造器 重写字段 抽象类、字段 扩展类 使用extends关键字 class Employee extends Person {...} 在子类中定义需要的新字段和方法,或者重写超类的方法 可将类声明为final,这样就不有被扩展 可将单个方...

Scala快速入门-6-单例对象及伴生对象

知识点 用对象作为单例或存放工具方法,Scala没有静态方法或字段 类可以有一个同名的伴生对象 对象的apply方法通常用来构造伴生类的新实例 Scala的main函数定义 单例对象 Scala没有静态方法或字段,可以用object语法定义结构,对象定义了类的单个实例。 对象的构造器在该对象第一次使用时被调用。 不能提供构造器参数。 作为存放工具函...

Scala快速入门-5-类定义

知识点 每个类都有一个主构造器,这个构造器和类的定义“交织”在一起,它的参数直接成为类的字段,主构造器执行类体中所有的语句 类中的字段自动带getter和setter方法 用@BeanProperty注解生成JavaBean的getXxx/setXxx方法 辅助构造器是可选的,它们都叫做this 类定义 定义及使用 scala> class Coun...

Scala快速入门-4-常用映射和元组操作

知识点 映射是键值对的集合 n个对象(并不一定要相同类型的对象)的集合,元组 映射 构造一个不可变(默认)映射(构造一个不可变的Map[String, Int],其值不能被改变) scala> val scores = Map("Alice" -> 90, "Bob" -> 88) scores: scala.collection.immutab...

Scala快速入门-3-常用数组操作

知识点 长度固定使用Array,长度有变化使用ArrayBuffer 提供初始值时不要使用new 用()来访问元素 for(elem <- arr)遍历元素 for(elem <- arr if …) yield …将原数组转为新数组 定长数组 10个整数的数组,所有元素初始为0 scala> val nums = new Array...

Scala快速入门-2-控制结构与函数

条件表达式、循环、for、函数

背景 表达式有值,语句执行动作。 Scala中,几乎所有构造出来的语法结构都有值,不像Java中把表达式和语句(if语句)分为两类。 在这里if表示式有值。 代码块也有值,最后一个表达式就是值。 语句中,分号不是必需的。 函数式中不使用return。 条件表达式 在Scala中if/else表达式有值,这个值就是在if或else之后的表达式的值。 ...

Scala快速入门-1-声明变量

声明变量、常用类型

背景 因为Spark是由Scala开发的,所以在开发Spark应用程序之前要对Scala语言学习。虽然Spark也支持Java、Python语言,但是作为一名Java程序猿,还是决定要学习Scala哈。 Scala是运行在JVM上一门语言。开发效率非常高、语法丰富简洁,三两行Scala代码能搞定Java要写的一大坨代码。 Scala的语法糖太甜~~ Scala特性 面向...

Hadoop和Spark的异同

解决问题的层面不一样 Hadoop和Spark两者都是大数据框架,但是各自存在的目的不尽相同。 Hadoop实质上是解决大数据大到无法在一台计算机上进行存储、无法在要求的时间内进行处理的问题,是一个分布式数据基础设施。 HDFS,它将巨大的数据集分派到一个由普通计算机组成的集群中的多个节点进行存储,通过将块保存到多个副本上,提供高可靠的文件存储。 MapReduce,通过简...

IntelliJ-IDEA-Maven-Scala-Spark开发环境搭建

背景 几乎所有编程语言的第一个程序都是 Hello World。 下载并安装JDK、Scala、Maven 之前的Hadoop HA 和 Spark集群的文章中已经安装过JDK、Scala。Maven安装也很简单,略。 下载Idea并安装Scala插件 在线安装有点慢,但网上很多方法解决,略。 创建一个maven-scala工程 按向导一步步填写、下...

Spark集群搭建

背景 基础软件安装 JDK 1.7(之前已经安装过) scala-2.11.4 spark-1.6.0-bin-hadoop2.6 集群ssh免密登录配置(之前已经安装过) 服务器分布及相关说明 由于目前只有3台虚拟机,所以分配如下: 服务器角色/服务器 Master(192.168.111.238) Sla...

Hadoop2.0架构及HA集群配置(2)

HA集群配置搭建

背景 在Hadoop2.0中通常由两个NameNode组成,一个处于Active状态,另一个处于Standby状态。Active NameNode对外提供服务,而Standby NameNode则不对外提供服务,仅同步Active NameNode的状态,以便能够在它失败时快速进行切换。 Hadoop2.0官方提供了两种HDFS HA的解决方案,一种是N...

Hadoop2.0架构及HA集群配置(1)

Hadoop2.0新特性 NameNode HA NameNode Federation HDFS快照 HDFS缓存 HDFS ACL NameNode HA 背景 Hadoop 1.0中NameNode在整个HDFS中只有一个,存在单点故障风险,一旦NameNode挂掉,整个集群无法使用 通过HDFS的高可用性将通过在同一个集群中运行两个NameN...

Yarn的基本概念与资源调度

Hadoop1.0架构回顾 Hadoop是Apache的一个开源分布式计算平台,以分布式文件系统HDFS,和MapReduce为核心的Hadoop为用户提供了系统底层细节透明的分布式基础架构。HDFS的高容错性、高伸缩性等优点形成分布式系统;MapReduce分布式编程模型让我们开发并行应用程序。 Hadoop为包含多个子项目的集合,其核心内容是MapR...

Hadoop集群环境搭建

配置虚拟机CentOS 修改IP cd /etc/sysconfig/network-scripts sudo vim ifcfg-eth0 重启服务 sudo /etc/init.d/network restart 两台虚拟机使用相同的网卡,需要重新安装网卡 通过 ifconfig查看,虚拟机使用相同的网卡eth0,所以需要卸载,在vmwar...