自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

文洲的专栏

对昨天不后悔,对今天不生气,对明天不担忧,对睡眠不轻视,对运动不排斥,爱自己,拥抱生活!

原创 3.spark 集群模式安装

集群模式说明安装JDK/Scala安装hadoop安装Spark下载安装测试开启独立集群开启shell执行语句测试集群模式说明如第一节所说,spark依赖的存储引擎和资源调度框架均可以替换,上一节默认都在本地,要改成集群模式,只需要把对应的存储引擎和计算引擎替换上即可。这里主要讲独立集群模式(standlone)和yarn集群模式:前者只依赖hdfs作为...

2020-01-29 17:15:52 89

原创 1.hive基础与安装

hive简介hive简单安装- 快速测试- 生产环境配置hive简介hive是标准hadoop体系的一员,常作为OLAP的数据仓库。hive存储一般基于HDFS或HBase构建,查询计算过程依赖 Apache Tez™, Apache Spark™, 或MapReduce。没有定义专门的数据格式,数据格式可以由用户指定,用户定义数据格式需要指定三个属性:列分隔符(通常为空格、”\...

2019-10-27 16:41:06 76

原创 1.mysql 基础与安装

mysql简介安装注意事项mysql简介mysql算是当前使用最广泛的数据库,常见概念中包含如下几个部分MySQL - MySQL服务器。你需要该选项,除非你只想连接运行在另一台机器上的MySQL服务器。MySQL-client - MySQL 客户端程序,用于连接并操作Mysql服务器。MySQL-devel - 库和包含文件,如果你想要编译其它MySQL客户端,例如Pe...

2019-10-27 16:35:52 113

原创 6.HDFS文件系统剖析

Hadoop三大组件:HDFS/MR/Yarn,前面已经详述了计算模型MR的全过程,都说Hadoop的思想是移动计算而不移动数据,这一切基于hadoop的分布式文件系统HDFS。这两节详述hdfs的的工作过程/原理和注意事项。读写流程结构首先看下HDFS的构成如下图Client:客户端。NameNode:master,它是一个主管、管理者,存储元数据。DataNode:slave,...

2019-09-28 14:25:38 94

原创 1.kafka 基础与安装

基础Kafka是基于Scala开发的多分区、多副本基于ZooKeeper协调的分布式消息引擎系统。和传统的消息队列/消息中间件不同,如下图,kafka一般当作集群用,支持如下功能:消息系统:类似传统消息队列(中间件)的功能,常用于系统解耦和异步处理,相比前辈它提供了消息顺序性和回溯消费等功能。存储系统:Kafka默认将消息顺序保存到磁盘上,其提供了多副本机制,非常适合做长期数据存储系统。...

2019-07-11 18:10:37 105

原创 1.zookeeper 基础与安装

基础zookeepr是一个最先由Yahoo开发的分布式协调服务,支持高性能、高可用的分布式协调服务,常用于数据发布/订阅、负载服务、命名服务、分布式协调/通知,集群管理、Master选举、分布式锁和分布式队列等功能。通常ZK组成如下的集群,集群分为Leader、Follower和Observer三种角色,通过ZAB协议选举出Leader,三种角色都能提供读服务,Observer相对Follow...

2019-06-29 18:32:10 67

原创 vmware NAT多机组网

经常遇到需要在本地搭建分布式环境的需求,这需要搭建一套本地的多虚拟机机互联,要求:1.每台虚拟机能上网2.虚拟机之间能ssh访问3.虚拟机和主机之间能相互访问一般采用NAT的方式组网,这里记下全流程,以供备忘。组网原理NAT的原理不再详述,可参考这篇文章,具体示意图如下。可以看到:多个虚拟机都连接到Vmnet8虚拟交换机,从而保证在一个网段,虚拟机间能够相互访问虚拟交换机连接到N...

2019-06-28 19:11:33 150

原创 5.最简单Spark应用 WordCount

编写步骤本地测试提交集群运行下载编写步骤引入spark库这里使用maven <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core --> <dependency> <groupId>org.apache.spark</gro...

2019-05-16 09:24:17 102

原创 4.RDD常见操作

RDD分类RDD 操作演示RDD核心概念-弹性分布式数据集类似Map/Reduce始终使用KV数据对,Spark中RDD可以保存所有类型数据,类似数据库中的一张表。RDD是不可变的,通过变换操作,返回全新RDD,原来RDD不变。RDD两种操作:变换(Transformation)map,filter,flatMap,groupByKey,reduceByKey,aggr...

2019-05-15 21:21:42 201

原创 2.spark 独立模式安装

安装JDK/Scala安装hadoop安装Spark- 下载- 安装- 测试安装JDK/Scala参考前文安装hadoop参考前文这里我们只需要使用HDFS作为存储,所以只需要start-dfs.sh启动分布式文件系统即可安装Spark下载下载位置 http://spark.apache.org/downloads.html注意选择适合对应hadoop版本的sp...

2019-05-15 21:20:55 245

原创 1.spark基础概念

hadoop存在问题spark优点Spark技术栈Spark体系架构核心架构hadoop存在问题基于磁盘,运行慢函数函数较少,只有map/reduce,不够灵活spark优点基于内存,优先存储在内存使用DAG(有限无环图),优化流程基于RDD数据集,提供更多的操作函数,且可以基于Scala或Python Shell快速验证原型Spark技术栈如下,基于Sp...

2019-05-15 21:15:35 63

原创 scala 安装和配置

使用Scala原因API足够优雅简单,快速上手,函数式特别适合处理数据,代表Kafka和Spark和基于JVM的hadoop生态结合好,可以混合java速度快,静态编译,相对其他JVM速度快安装和配置首先需要安装Java 8(添加JAVA_HOME到bin目录和设置CLASSPATH)Scala下载位置,mac和windows可以直接使用安装包,也可以解压安装配置和Java类似,...

2019-05-13 16:09:33 358

原创 go jenkins自动编译部署

jenkins安装jenkins配置go插件安装编译配置参考文档jenkins安装安装包下载位置,可以直接安装对应系统安装包,也可以使用通用安装包.war文件,这里使用war包安装。单独运行Jenkins可以作为一个独立的应用程序在其自己的流程中运行, 内置Java servlet 容器/应用程序服务器(Jetty)。运行命令java -jar jenkins.war...

2019-04-21 13:09:05 1156

原创 10.go 批量写hbase方法和坑

thrift go 使用批量写入写入的几处坑源码下载thrift go 使用和python使用类似,使用go 也需要通过thrift接口访问hbase,参考之前,如下编译thrift接口thrift -gen go ./Hbase.thrift目录gen-go下即为生成的hbase访问库,也可以直接使用附件生成好的库,当前使用的hbase 2.x环境。thrift1接口建...

2019-04-21 13:05:57 604

原创 3.maven最佳实战

聚合继承实战通常使用maven主要使用它的自动拉取包的功能,在此基础上我们考虑如何组织大型项目,一般大型项目都由多个模块组成,这些模块分别有相同和不同的jar包依赖,各个项目模块之间也存在依赖关系,怎么合理组织这些项目呢,这需要用到maven很重要的功能——聚合和继承,配合这两者使用,可以完成最合理的maven配置。聚合主项目A包含模块B和C,希望A编译时自动编译B和C,如何实现...

2019-04-02 10:38:07 64

原创 2.maven坐标和依赖

定义引用依赖范围依赖传递仓库定义maven使用POM(Project Object Model, 项目对象模型)文件 pom.xml来管理依赖。首先,默认定义一个包是通过指定groupId、artifactId、version、packaging和classifier构成的唯一坐标来完成的。<groupId>junit</groupId><ar...

2019-04-02 10:37:14 76

原创 1.maven基础使用

下载安装配置生命周期插件下载下载位置,目前直接使用3.x版本即可安装直接解压到对应目录即可,配置M2_HOME环境变量指向解压后目录,一些软件会默认引用这个环境变量来查找Maven的安装。然后配置path变量指向M2_HOME/bin,便于命令行直接使用。配置优先使用~/.m2/setting.xml配置,否则使用默认的M2_HOME/conf/setting.xml配...

2019-04-02 10:34:57 70 2

原创 工具-Hadoop Streaming

用途和原理程序编写其他参数设置源码和参考用途和原理前面写MR都是使用的java,但是通常数据分析人员不一定会java,难道还要去学习下java再写MR?实际上不用,hadoop已经考虑到了这个问题,所以它提供了一个中间工具,帮助我们可以直接使用其他脚本语言比如python/ruby等语言编写MR任务,这就是hadoop streaming。正式编写前,先看看streaming的...

2019-03-30 22:00:40 206

原创 工具-Hadoop distcp

fs shell拷贝和移动distcp 原理distcp 操作方法fs shell拷贝和移动通常我们使用hadoop提供的fs shell来完成hdfs文件管理。为了对比dictcp,先看下常用的-cp和-mv的使用。现有目录/lib包含文件1.data 2.data-cp如下操作hadoop fs -cp /lib /lib2 拷贝生成相同结构的lib2had...

2019-03-30 21:59:52 1313

原创 工具-Hadoop Archive

原理命令使用方式演示不足原理Hadoop的文件存储的单元为一个块(block),block的数据存放在集群中的datanode节点上,由namenode对所有datanode存储的block进行管理。每个文件对应的block块信息称为元数据,这些数据保存在namenode上。如果存在大量小文件,会导致namenode上的元数据急剧膨胀,而这些元数据一般存放在namenode内存中...

2019-03-30 21:59:05 224

原创 4.hbase 表设计原则

反范式很重要不用区分行和列牢记有序和行键设计- key均匀化- 组合key(索引)设计不同于传统关系数据库围绕数据先建模再考虑查询,HBase(Cassandra等NOSQL)强调围绕查询进行建模,干什么活做什么设计,海量数据就没必要多余的设计了。具体总结包含如下三大原则:反范式很重要传统关系数据库中,期间遵循数据设计的三大范式,减小数据冗余,彼此间通过关系引用,hbase...

2019-03-30 21:41:57 251

原创 3.hbase 存储模型和存储过程分析

逻辑存储模型物理存储模型存储过程- 查询- 写入- 删除hbase为什么可以存储PB级的数据还可以保证千万QPS的并发和ms级的访问速度,这得离不开它巧妙的存储模型和存储过程。另一方面,只有清楚了解hbase存储模型和存储过程才能设计好hbase最关键的行键。逻辑存储模型逻辑上,可以把Hbase看成一个多维的哈希表,行键(Rowkey)-列族(Column Family)-...

2019-03-30 21:39:53 730

原创 1.大数据存储选型——何时用hbase

数据库发展NoSQLSharding-nothing存储选型要搞懂大数据存储选型,首先必须得了解数据库的发展历史,了解关系数据库的优势和缺点,才能进一步考虑如何处理这些问题。数据库发展简单来说,数据库的发展是跟随数据量的发展来发展的,最开始的时候LAMP已经足够使用,当海量大数据出现后,如何存储和查询这些数据就成了人们考虑的问题,这时候人们自然想到从两方面入手:硬件...

2019-03-27 21:09:32 853

原创 2.hbase 安装

下载和版本选择安装Java环境解压安装包配置开启和测试下载和版本选择官网下载 https://hbase.apache.org/downloads.html镜像下载 https://supergsego.com/apache/hbase/当前我下载的是2.0.4的稳定版,这也是当前公司集群布置的版本,靠谱!现在很多公司还在用0.9x/1.x版本,2.x版本相对来说无论是...

2019-03-27 21:07:37 69

原创 go 命令参数的解析

flag自定义flag完全自定义解析命令参数的解析是常用功能,go中借助flag包来完成这一功能。flagflag使用很简单,包括如下3步:预声明参数变量绑定参数解析和调整帮助显示参数解析,按照预定义方式绑定到变量//预声明变量var name string//绑定参数变量func init() { flag.StringVar(&name, "n...

2019-03-23 13:58:30 408

原创 go 包管理前世今生

GOPATH- 多个工作区问题- 相同后缀路径导入问题dep包管理go modules包管理按照历史来说,目前go1.12为止,官方有三种包管理方式,分别是:原始的GOPATH1.9开始支持的go dep1.11开始支持的go modules三种方式并不是后者淘汰前者,就目前来看各有各的使用场景,新的兼容旧的方式,如果新学习的话建议直接使用go modules。GO...

2019-03-23 13:54:16 153 1

原创 bash shell常见问题

全局变量和局部变量几种括号区别- 圆括号()- 方括号[]- 大括号{}各种配置文件- 登录shell- 交互式shell- 非交互式shell全局变量和局部变量变量设置var=xxx,var和=中间能不能有空格,否则var会被当作命令执行。全局变量必须使用export导出,否则在子shell中无法生效。几种括号区别bash中最让人崩溃的是各种表达方式的微弱差别含义...

2019-03-23 13:50:18 112

原创 5.hbase 批量导入数据

Bulk LoadingImporttsv生成HFile导入HBase自定义MR生成HFile导入HBase注意事项源码下载Bulk Loading向hbase写入数据常用两种方式:客户端 API写入Mapreduce任务TableOutputFormat格式输出然而,对于超大量的数据写入,这两种方式都不合适,会非常占用内存和耗时而且JVM GC和...

2019-03-13 09:21:02 1063

原创 9.python 查询hbase2 (三)

环境准备连接查询扫描源码下载前文有说thrift连接操作hbase略显麻烦,happybase完美解决这些问题,操作接口很类似hbase shell,性能和异常处理相对官方版本也做了诸多优化,可谓真的相当的happy了。唯一的问题是这是个第三方库(Github地址),目前作者还在维护,除非你要完全跟上最新Hbase 接口或者希望多个语言接口尽可能保证一致,强烈推荐此库。环境准备...

2019-03-10 16:55:05 204

原创 8.python 查询hbase2 (二)

环境准备连接查询扫描源码下载上篇文章讲述了python如何通过thrift连接操作hbase,是官方最常用方法,但是略显麻烦。下面介绍两种更易用的场合,在指定的场景中可以考虑使用,本节介绍thrift2,下节介绍happybase方式。环境准备thrift2是当时为了适应新的Java API提出来的。它的操作和接口与Java API接口很像,但是目前没有完全支持所有thrif...

2019-03-10 16:54:06 334

原创 7.python 查询hbase2 (一)

thrift环境准备连接查询扫描源码下载thrift环境准备hbase是接口API是java的,如果需要通过python来操作的话,可以使用thrift服务。使用thrift需要部署thrift接口服务和thrift客户端环境,thrift负责将操作请求翻译后调用Java API操作,客户端thrift负责序列化请求后传输。示意如下:客户端和接口可以装在同一台机器上,也可以...

2019-03-10 16:53:06 783

原创 6.thrift centos编译

编译问题下载业界两大RPC框架thrift(Facebook)和protobuf(Google)现在可是用的非常普遍,linux上编译thrift遇到不少坑,记下来供有需要的朋友参考。编译系统环境:操作系统为CentOS 6.5g++版本4.4(要求必须g++版本 >= 4.2)下载:http://thrift.apache.org/download当前编译...

2019-03-10 16:50:44 250

原创 5.MR应用程序模板

MR常用需求MR应用程序模板程序演示和演示MR常用需求在进一步讲解MR各个组件前,先详细说下编写常用MR需要考虑的点。之前讲过最简单MR如何编写,而在实际应用中,为了工程考虑和复用性,还需要考虑配置解析、执行环境准备、任务参数设置、目录清理。配置解析:默认hadoop jar执行时使用集群当前配置文件配置。如下图,输入hadoop fs时出现如下通用选项,可以通过命令行-con...

2019-03-06 09:54:08 197 2

原创 4.MR过程分析

1. 三大过程Map侧ShuffleReduce侧Shuffle2. 六大组件InputFormatOutputFormatSerilizerComparatorCombinerPartitioner1. 三大过程上一节演示了最简单的MR任务的编写,可以看到其实很简单,说简单点就是套模板。但是要想用好hadoop这一利器,需要了解更多执行细节,在基本概念中...

2019-02-17 16:23:12 115

原创 3.最简单的MR-WordCount

程序结构map部分reduce部分主入口测试运行历史分析下载程序结构从这一节开始,我会讲MR任务编写的方方面面,但是仅限在任务编写这块,不会过度涉及HDFS和Yarn调度的深入分析,计算时提也只是为了更好的理解MR任务。对于Mapreduce计算模型会深入介绍,只有了解Mapreduce计算模型计算模型才能真正掌握整个MR任务的编写,对于相关任务的调优和过程划分才会有清洗的...

2019-02-17 16:21:36 478

原创 2.hadoop伪分布式安装

预备环境准备下载和安装配置核心配置存储配置计算启动和测试预备环境准备JAVA环境配置建议使用JDK,最低使用Java 7,都2018了建议使用Java 8。官网下载最新版本JAVA,也可以源安装OpenJDK。/etc/profile添加环境变量如下:JAVA_HOME=/home/xxx/jdk1.8.0_181CLASSPATH=.:$JAVA_HOME/lib...

2019-02-17 16:19:29 106

原创 1.Hadoop基本概念

序言Hadoop的基本概念Hadoop生态推荐学习资料- 书籍- 视频- 文档序言做IT的都知道数据的重要性,尤其在这个万物互联的时代,一方面TB、PB级的数据迅速增长,另一方面需要从这些数据中获取各种各样的复杂信息。基于传统的关系数据库技术的数据分析已经满足不了海量数据的需求,这种情况下基于分布式的大数据技术诞生了,它是为了解决海量数据的存储和计算的。毫无疑问的是,就当...

2019-02-17 16:17:27 140

原创 字符串-模式匹配(易理解版)

KMP感觉是个魔咒,每次看的时候都理解了,等到一段时间后又忘了,很多人觉得自己理解了,真正写代码时又写不出来。归根到底是没理解透彻,这次彻底研究了下,发现网上流传的代码没那么好理解,所以自己写了一版,原理都是一样,但是相对好理解,理解了这一版代码再看经典实现就都明白了。原理KMP的核心在于减少回溯,回溯的关键在于生成next数组,KMP原理如下图,在T中查找S,当产生失配时,i不动,回溯j...

2019-01-27 12:49:57 132

原创 栈的应用-四则运算算术表达式(C++版)

很久之前写过,用栈实现四则运算,现在会看当时的实现有两个问题:1.使用自己实现的容器,不够通用2.代码实现的封装性不够此次在原先的基础上,使用C++重构,直接使用STL容器类来实现四则运算。原理这里不再赘述,方法和注意事项参考之前文章理论部分核心算法1最通用的方法就是使用两个栈,分别对运算数和运算符压栈出栈实现运算符优先级计算,核心函数为算符比较函数。如下,注意这里的优...

2019-01-08 22:07:18 720

原创 一种资源池的实现

这两天看到一种静态链表的实现,刚好可以拿来做资源池的实现,记下供参考。先说静态链表,这最开始为了给Pascal等没有指针的语言来实现链表的一种方式,为了模拟链表指针指向下一个节点的方式,静态聊表使用数组下标来表示下一个元素的位置。就算是在有指针的语言中,使用静态链表也有它的优势:初始化后相对顺序存储结构插入删除元素不需要移动元素,相对指针实现的链表不需要动态分配和删除元素内存,正好适用于固...

2018-11-29 22:23:48 985

提示
确定要删除当前文章?
取消 删除