Hadoop、Hive、HDFS、Hbase、KUDU、Spark之间关系 您所在的位置:网站首页 天突准确位置图和功效 Hadoop、Hive、HDFS、Hbase、KUDU、Spark之间关系

Hadoop、Hive、HDFS、Hbase、KUDU、Spark之间关系

#Hadoop、Hive、HDFS、Hbase、KUDU、Spark之间关系| 来源: 网络整理| 查看: 265

*HDFS

HDFS是Hadoop生态圈最基础的存储引擎,请注意HDFS的设计主要为大文件存储,为高吞吐量的读取和写入服务,HDFS不适合存储小文件,也不支持大量的随机读写。

*Hive

特点:

Hive帮助熟悉SQL的人运行MapReduce任务。 运行Hive查询会花费较长时间,因为Hive的默认计算引擎是Hadoop的MapReduce。当然Hive也可以将底层计算引擎更换为Spark/Tez等

限制:

Hive目前仅支持ORCFile文件格式的数据更新操作(前提是需要开启事务支持),Hive必须提供预先定义好的schema,将文件映射成表。

应用场景:

Hive主要用户构建基于Hadoop平台的数据仓库, 处理大数据量的离线处理工作;

*Hbase

是基于HDFS的数据库,主要适用于海量数据明细随机实时查询、如日志明细、交易清单、轨迹行为等。在大数据架构中,Hive和HBase是协作关系,数据流一般如下:通过ETL工具将数据源抽取到HDFS存储;通过Hive清洗、处理和计算原始数据;Hive清洗处理后的结果,如果是面向海量数据随机查询场景的可存入Hbase数据应用从HBase查询数据

特点:

HBase通过存储Key/Value类型数据来工作。它支持四种主要的操作:增加或者更新行、查看一个范围内的cell、获取指定的行、删除指定的行、列或者列的版本。HBase数据的版本信息主要用来获取历史数据,每一行的历史数据可以被删除,然后通过HBase的Compactions可以释放空间。虽然HBase包括表格,但是schema仅仅被表格和列族所要求,列不需要schema。HBase的表包括增加和计数功能。

限制:

HBase的SQL查询功能可以通过 ApachePhonenix实现,需要提供表的schema。HBase的运行需要zookeeper的支持,zookeeper用来分布式协调服务(配置服务、维护元信息、命名空间服务)

应用场景:

HBase 适合用来大数据的实时查询、海量数据的存储、离散型数据的存储

kudu

Kudu是围绕Hadoop生态圈建立存储引擎,Kudu拥有和Hadoop生态圈共同的设计理念,它运行 在普通的服务器上、可分布式规模化部署、并且满足工业界的高可用要求。其设计理念为: 既支持随机读写、又支持 OLAP 分析的大数据存储引擎(fast analytics on fast data)。

Kudu的典型使用场景

流式计算场景通常有持续不断地大量写入,与此同时这些数据还要支持近乎实时的读、写以及更新操作。Kudu的设计能够很好的处理此场景。

Kudu的hash分片设计能够很好地避免TSDB类请求的局部热点问题。同时高效的Scan性能让Kudu能够比Hbase更好的支持查询操作。

机器学习和数据挖掘的中间结果往往需要高吞吐量的批量写入和读取,同时会有少量的随机读写操作。Kudu的设计可以很好地满足这些中间结果的存储需求。

在工业界实际生产环境中,往往有大量的历史遗产数据。Impala可以同时支持HDFS、Kudu等多个底层存储引擎,这个特性使得在使用的Kudu的同时,不必把所有的数据都迁移到Kudu。

Spark

Spark 运算比 Hadoop 的 MapReduce 框架快的原因是因为 Hadoop 在一次 MapReduce 运算之后,会将数据的运算结果从内存写入到磁盘中,第二次 Mapredue 运算时在从磁盘中读取数据,所以其瓶颈在2次运算间的多余 IO 消耗. Spark 则是将数据一直缓存在内存中,直到计算得到最后的结果,再将结果写入到磁盘,所以多次运算的情况下, Spark 是比较快的. 其优化了迭代式工作负载。但他本身是不能进行数据存储的,数据还是来源于HDFS。

spark核心包括以下四个部分 :

Spark SQL: 提供了类 SQL 的查询,返回 Spark-DataFrame 的数据结构(类似 Hive) Spark Streaming: 流式计算,主要用于处理线上实时时序数据(类似 storm) MLlib: 提供机器学习的各种模型和调优 GraphX: 提供基于图的算法,如 PageRank

Original: https://blog.csdn.net/qq_28340701/article/details/124946319Author: 灵豸Title: Hadoop、Hive、HDFS、Hbase、KUDU、Spark之间关系

相关阅读 Title: jenkins构建go及java项目 jenkins构建go及java项目

转载请注明出处https://www.cnblogs.com/funnyzpc/p/14554017.html

写在前面

jenkins作为java的好基友,经历过单体项目时代->集群项目时代->容器集群分布式时代,使用稳定可靠,cpu友好(就泪存有点儿难看),如果有问题就。。。

jenkins构建go及java项目(当然这种情况不多(_) ) , 至于后期又有了jenkins x(容器版),对于非容器环境这里这里就不介绍啦

然后简略介绍我自己的项目情况吧,说说我的思路;首先我的项目有一个后台mee(java)、mee-api(多个,为Java项目)以及gee-api项目(多个,go项目),后台项目暂不集群分布(目前够用),mee-api及gee-api项目只是个模子,主要做分布式或集群微服务,目前只有这三个微服务在跑,整个打包部署过程。。。纯手工(很麻烦),因为专注于开发目前ci/cd也不复杂,所以就借用了本人之前写的windows自动部署小工具,目测够用,但有一点儿较为麻烦,就是对于纯开发配置较为麻烦,每次运行还是需要配合服务端脚本,同时运行命令也较为复杂(偶尔也会有莫名其妙的问题),遂~这次特意研究了下jenkins(主要是近几个公司全用这个来构建;因为我本人使用的win本,所以以下配置对于win的构建比较友好哈~(如果您是linux部署请自行将cmd脚本更改为shell脚本 目测就好😄)

准备

首先,你得需要安装jenkins(自不必多说了。。。),以下为jenkins宿主机(windows)系统下需要~

jenkins maven jdk go jenkins下安装插件(这里简要描述) 安装 路径: Manage Jenkins(jenkins管理)->Manage Plugins(插件管理)->搜索可用插件 安装可用插件 ssh、git(或svn,视需求)、maven(或gradle,视需求)、 配置权限模块(如果需要的话) Manage Jenkins(jenkins管理)->Global Security(全局安全) 配置ssh账号(略) 配置git或svn账号(略) 基础配置 路径: Manage Jenkins(jenkins管理)->Global Tool Configuration(全局工具配置) 配置jdk jenkins构建go及java项目 配置git jenkins构建go及java项目 配置maven jenkins构建go及java项目 添加视图标签 添加视图标签 New View(构建任务会放在指定标签下) jenkins构建go及java项目 添加java构建 选择(鼠标点击)新建的视图标签,然后选择左侧的 New Item jenkins构建go及java项目 填写构建的基本信息 jenkins构建go及java项目 构建配置详情 jenkins构建go及java项目 添加go构建

首先说,默认按照插件的方式配置go的构建十分的麻烦(无法下载go sdk以及go项目依赖也无法拉取),当然解决的方式也很简单;

go mod无法下载依赖::在window cmd命令中加入对go env的GOPROXY的设置(同理对于go打包的配置也是一致的) 无法使用go的命令:: 在windows cmd命令行中使用绝对路径调用其命令

以上问题的解决详见下图,具体不做解释

jenkins构建go及java项目 相关脚本 jenkins 执行远程脚本命令 go应用执行脚本 /usr/bin/sh /mnt/sh/deploy_go.sh external-api /mnt/app/gee >/dev/null 2>&1 & java(springboot)应用执行脚本 /usr/bin/sh /mnt/sh/deploy_go.sh external-api /mnt/app/gee >/dev/null 2>&1 & java 部署脚本 deploy.sh,记得部署的时候使用 chmod a+x deploy.sh #!/bin/sh export BUILD_ID=dontKillMe export JAVA_HOME=/usr/local/java/jdk1.8.0_222 export JRE_HOME=/usr/local/java/jdk1.8.0_222/jre #项目名称 xxx.jar project_name=$1 #部署路径 deploy_path=$2 #文件路径 upload_path=/mnt/pkg/$1 if [ -f "${upload_path}" ]; then # kill process ps -ef|grep ${project_name}|grep java|awk '{print $2}'|xargs kill -9 # remove file rm -rf ${deploy_path}/${project_name} # backup file cp -r ${upload_path} ${deploy_path}/${project_name}_date "+%Y%m%d%H%M%S" # move file mv ${upload_path} ${deploy_path}/${project_name} # exec deploy cd ${deploy_path} && nohup java -jar ${deploy_path}/${project_name} >/dev/null 2>&1 & else exit 0 fi go 部署脚本 deploy_go.sh,创建脚本后同样需要 chmod a+x deploy_go.sh #!/bin/sh export BUILD_ID=dontKillMe #example gee project_name=$1 #deploy path deploy_path=$2 #file path upload_path=/mnt/pkg/$1 if [ -f "${upload_path}" ]; then # kill process kill -9 ps -C ${project_name} -o pid= # remove file rm -rf ${deploy_path}/${project_name} # backup file cp -r ${upload_path} ${deploy_path}/${project_name}_date "+%Y%m%d%H%M%S" # move file mv ${upload_path} ${deploy_path}/${project_name} # add exec auth chmod a+x ${deploy_path}/${project_name} # exec deploy cd ${deploy_path} && nohup ./${project_name} > ./${project_name}.log 2>&1 & else exit 0 fi

=>完结,如能有谬误之处请留言哈😂

Original: https://www.cnblogs.com/funnyzpc/p/14554017.htmlAuthor: funnyZpCTitle: jenkins构建go及java项目

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/381500/

转载文章受原作者版权保护。转载请注明原作者出处!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有