Scala之流程控制
Scala第四章节章节目标
掌握分支结构的格式和用法
掌握for循环和while循环的格式和用法
掌握控制跳转语句的用法
掌握循环案例
理解do.while循环的格式和用法
流程控制结构概述在实际开发中, 我们要编写成千上万行代码, 代码的顺序不同, 执行结果肯定也会受到一些影响, 并且有些代码是满足特定条件才能执行的, 有些代码是要重复执行的. 那如何合理规划这些代码呢? 这就需要用到: 流程控制结构了.
分类
顺序结构
选择(分支)结构
循环结构
注意: Scala和Java中的流程控制结构是基本一致的.
顺序结构概述顺序结构是指: 程序是按照从上至下, 从左至右的顺序, 依次逐行执行的, 中间没有任何判断和跳转.
如图:
注意: 顺序结构是Scala代码的默认流程控制结构.
代码演示val a = 10
println("a: " + a) //打印结果为10
println("键盘敲烂, ")
println("月薪过万! ")
思考题下边这行代码的打印结果应该是什么呢?
println(10 + 10 + "Hello,Scala" + 10 + ...
HDFS数据安全与隐私保护
HDFS数据安全与隐私保护Trash垃圾回收背景回收站(垃圾桶)是微软Windows操作系统里的一个系统文件夹,主要用来存放用户临时删除的文档资料,存放在回收站的文件可以恢复。
回收站的功能给了我们一剂“后悔药”。回收站保存了删除的文件、文件夹、图片、快捷方式等。这些项目将一直保留在回收站中,直到您清空回收站。我们许多误删除的文件就是从它里面找到的。
HDFS本身也是一个文件系统,那么就会涉及到文件数据的删除操作。默认情况下,HDFS中是没有回收站垃圾桶概念的,删除操作的数据将会被直接删除,没有后悔药。
功能概述Trash机制,叫做回收站或者垃圾桶。Trash就像Windows操作系统中的回收站一样。它的目的是防止你无意中删除某些东西。默认情况下是不开启的。
启用Trash功能后,从HDFS中删除某些内容时,文件或目录不会立即被清除,它们将被移动到回收站Current目录中(/user/${username}/.Trash/current)。
.Trash中的文件在用户可配置的时间延迟后被永久删除。也可以简单地将回收站里的文件移动到.Trash目录之外的位置来恢复回收站中的文件和目 ...
HDFS核心源码分析
HDFS核心源码分析Hadoop源码编译为什么要编译源码Native Library本地库Native Library,一般译为本地库或原生库,是由C/C++编写的动态库(*.so),并通过JNI(Java Native Interface)机制为java层提供接口。应用一般会出于性能、安全等角度考虑将相关逻辑用C/C++实现并编译为库的形式提供接口,供上层或其他模块调用。
Hadoop是使用Java语言开发的,但是有一些需求和操作并不适合使用java,所以就引入了本地库(Native Library) 的概念。说白了,就是Hadoop的某些功能,必须通过JNT来协调Java类文件和Native代码生成的库文件一起才能工作。系统要运行Native代码,首先要将Native编译成目标CPU架构的动态库文件
不同的处理器架构,需要编译出相应平台的动态库文件(Linux下对应[.so]文件,windows下对应[.dll]文件),才能被正确的执行。
Hadoop本地库主要组件有:
压缩编解码器(bzip2,lz4,snappy,zlib)。
HDFS的本地IO实用程序,用于HDFS短路本地 ...
HDFS架构原理
HDFS架构原理HDFS架构剖析HDFS整体概述HDFS是Hadoop Distribute File System 的简称,意为:Hadoop分布式文件系统。是Hadoop核心组件之一,作为大数据生态圈最底层的分布式存储服务而存在。HDFS解决的问题就是大数据如何存储,它是横跨在多台计算机上的文件存储系统并且具有高度的容错能力。
HDFS集群遵循主从架构。每个集群包括一个主节点和多个从节点。在内部,文件分为一个或多个块,每个块根据复制因子存储在不同的从节点计算机上。主节点存储和管理文件系统名称空间,即有关文件块的信息,例如块位置,权限等。从节点存储文件的数据块。主从各司其职,互相配合,共同对外提供分布式文件存储服务。当然内部细节对于用户来说是透明的。
角色介绍概述HDFS遵循主从架构。每个群集包括一个主节点和多个从节点。其中:
NameNode是主节点,负责存储和管理文件系统元数据信息,包括namespace目录结构、文件块位置信息等;DataNode是从节点,负责存储文件具体的数据块。
两种角色各司其职,共同协调完成分布式的文件存储服务。
SecondaryNameNode是主角 ...
Apache Flume
Apache Flume概述Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的软件。
Flume的核心是把数据从数据源(source)收集过来,再将收集到的数据送到指定的目的地(sink)。为了保证输送的过程一定成功,在送到目的地(sink)之前,会先缓存数据(channel),待数据真正到达目的地(sink)后,flume在删除自己缓存的数据。
Flume支持定制各类数据发送方,用于收集各类型数据;同时,Flume支持定制各种数据接受方,用于最终存储数据。一般的采集需求,通过对flume的简单配置即可实现。针对特殊场景也具备良好的自定义扩展能力。因此,flume可以适用于大部分的日常数据采集场景。
当前Flume有两个版本。Flume 0.9X版本的统称Flume OG(original generation),Flume1.X版本的统称Flume NG(next generation)。由于Flume NG经过核心组件、核心配置以及代码架构重构,与Flume OG有很大不同,使用时请注意区分。改动的另一原因是将Flume纳入 apache ...
HDFS集群管理与运维
HDFS集群管理与运维HDFS数据迁移解决方案数据迁移指的是一种大规模量级的数据转移,转移的过程中往往会跨机房、跨集群 ,数据迁移规模的不同会导致整个数据迁移的周期也不尽相同 。
在HDFS中,同样有许多需要数据迁移的场景,比如冷热数据集群之间的数据转化, 或者HDFS数据的双机房备份等等 。因为涉及跨机房 、跨集群,所以数据迁移不会是一个简单的操作。
数据迁移使用场景
冷热集群数据同步、分类存储
集群数据整体搬迁
当公司的业务迅速的发展,导致当前的服务器数量资源出现临时紧张的时候,为了更高效的利用资源,会将原A机房数据整体迁移到B机房的,原因可能是B机房机器多,而且B机房本身开销较A机房成本低些等;
数据的准实时同步
数据准实时同步的目的在于数据的双备份可用,比如某天A集群突然宣告不允许再使用了,此时可以将线上使用集群直接切向B的同步集群,因为B集群实时同步A集群数据,拥有完全一致的真实数据和元数据信息,所以对于业务方使用而言是不会受到任何影响的。
数据迁移要素考量
Bandwidth-带宽
带宽用的多了,会影响到线上业务的任务运行,带宽用的少了又会导致数据同步过慢的问题。 ...
Scala之运算符
Scala第三章节章节目标
理解运算符的相关概述
掌握算术, 赋值, 关系, 逻辑运算符的用法
掌握交换变量案例
理解位运算符的用法
算术运算符运算符简介用来拼接变量或者常量的符号就叫: 运算符, 而通过运算符连接起来的式子就叫: 表达式. 实际开发中, 我们会经常用到它.
例如:
10 + 3 这个就是一个表达式, 而+号, 就是一个运算符.
注意: 在Scala中, 运算符并不仅仅是运算符, 也是函数的一种, 这点大家先了解即可, 后续我们详细讲解.
运算符的分类
算术运算符
赋值运算符
关系运算符
逻辑运算符
位运算符
注意: Scala中是没有三元运算符的, 被if-else给替代了.
算术运算符算术运算符指的就是用来进行算术操作的符号, 常用的有以下几种:
运算符
功能解释
+
加号, 功能有3点. 1) 表示正数 2) 普通的加法操作 3) 字符串的拼接
-
减号, 功能有2点. 1) 表示负数 2) 普通的减法操作
*
乘号, 用于获取两个数据的乘积
/
除法, 用于获 ...
Scala之基础知识
Scala第二章节章节目标
掌握变量, 字符串的定义和使用
掌握数据类型的划分和数据类型转换的内容
掌握键盘录入功能
理解Scala中的常量, 标识符相关内容
输出语句和分号输出语句方式一: 换行输出
格式: println(里边写你要打印到控制台的数据);
方式二: 不换行输出
格式: print(里边写你要打印到控制台的数据);
注意: 不管是println(), 还是print()语句, 都可以同时打印多个值.格式为: println(值1, 值2, 值3...)
分号Scala语句中, 单行代码最后的分号可写可不写. 如果是多行代码写在一行, 则中间的分号不能省略, 最后一条代码的分号可省略不写.
示例:
println("Hello, Scala!") //最后的分号可写可不写
//如果多行代码写在一行, 则前边语句的分号必须写, 最后一条语句的分号可以省略不写.
println("Hello"); println("Scala")
Scala中的常量概述常量指的是: 在程序的运行过程中, 其值不能发生改变的量.
分类
字面值常量(常用的有以下几种) ...
Scala之入门
Scala第一章节章节目标
理解Scala的相关概述
掌握Scala的环境搭建
掌握Scala小案例: 做最好的自己
Scala简介概述 Scala(斯嘎拉)这个名字来源于”Scalable Language(可伸缩的语言)”, 它是一门基于JVM的多范式编程语言, 通俗的说: Scala是一种运行在JVM上的函数式的面向对象语言. 之所以这样命名, 是因为它的设计目标是: 随着用户的需求一起成长. Scala可被广泛应用于各种编程任务, 从编写小型的脚本到构建巨型系统, 它都能胜任. 正因如此, Scala得以提供一些出众的特性, 例如: 它集成了面向对象编程和面向函数式编程的各种特性, 以及更高层的并发模型.
总而言之, Scala融汇了许多前所未有的特性, 而同时又运行于JVM之上, 随着开发者对Scala的兴趣日增, 以及越来越多的工具支持, 无疑Scala语言将成为你手上一门必不可少的工具.
基于JVM解释:Scala的运行环境和Java类似, 也是依赖JVM的.
多范式解释: Scala支持多种编程风格
Scala之父 ...
HDFS数据存储与数据管理
HDFS数据存储与数据管理HDFS REST HTTP API我们之前所学习的HDFS shell客户端和Java客户端,都客户端上安装了HDFS客户端。之前我们在windows上也配置了HDFS的windows版本客户端,否则,我们将无法操作HDFS。而且,客户端的版本如果不匹配,有可能会导致无法操作。
如果我们想要在没有安装HDFS客户端的机器上操作该如何呢?譬如以下场景:
接下来,我们将学习几种基于HTTP协议的客户端,HTTP是跨平台的,它不要求客户端上必须安装Hadoop,就可以直接操作HDFS。
WebHDFS
简介WebHDFS其实是HDFS提供的HTTP RESTFul API接口,并且它是独立于Hadoop的版本的,它支持HDFS的完整FileSystem / FileContext接口。它可以让客户端发送http请求的方式来操作HDFS,而无需安装Hadoop。
在我们经常使用的HDFS Web UI,它就是基于webhdfs来操作HDFS的。
关于RESTfulREST
REST(表现层状态转换,英语:Representational State Trans ...
HDFS入门与应用开发
企业存储系统随着这两年产业互联网的推动和发展,越来越多的企业开始进行数字化转型,将传统的业务流程进行数字化改造。在进行数字化的过程中,需要数据来支撑企业的业务流程重塑,并以客户、产品为核心,以数据来支撑精细化运营。而数据分散在不同的系统中,要更充分的利用数据,需要将企业的大量数据集中存储,并进行业务化处理。此时,我们要想办法来解决大规模数据存储的问题。不管是使用哪种存储技术,都需要有存储硬件的支持。
硬盘
硬盘是计算机的主要存储硬件,可以用来存储大量数据。目前(2020年),市面上比较流行的硬盘多数是TB级的。
SATA硬盘SATA即Serial ATA(串行ATA),是由Intel、IBM、Maxtor和Seagate等公司提出的硬盘接口规范。采用的是串行连接方式,很多时候会把SATA接口的硬盘称之为串口硬盘。
上图为希捷2TB高速机械硬盘,SATA接口,拥有256M的磁盘缓存,转速7200rpm,每秒可达90-190MB的速度。
SATA SSD固态硬盘
采用固态电子存储芯片阵列制作的硬盘,是以闪存作为永久性存储器的存储设备。固态硬盘的读取速度可以在500Mb/s左右。
RAID ...
大数据开篇与Hadoop搭建
大数据开篇与Hadoop搭建学习目标1.理解大数据相关概念、特点、应用场景
2.掌握大数据业务分析基本步骤
3.掌握分布式、集群相关概念
4.掌握Hadoop相关概念、Hadoop架构
5.掌握Hadoop集群搭建
6.掌握Hadoop各组件模块功能
7.了解HDFS基准测试
大数据课程导论大数据概念最早提出“大数据”时代到来的是全球知名咨询公司麦肯锡,大数据是当前很热的一个词。这几年来,云计算、继而大数据,成了整个社会的热点,大数据究竟是什么东西?有哪些相关技术?对普通人的生活会有怎样的影响?我们来一步步弄清这些问题。
CCTV9——大数据时代
中国首部大数据产业题材纪录片——《大数据时代》于7月1日20:04分在央视9套纪录频道首播,该片由中央广播电视总台与工业和信息化部联合出品、工业和信息化部信息化和软件服务业司指导、央视纪录频道和国家工业信息安全发展研究中心联合摄制。该片是国内首部大数据产业题材纪录片,节目细致而生动地讲述了大数据技术在政府治理、民生服务、数据安全、工业转型、未来生活等方面给我们带来的改变和影响。
数据在讲什么是大数据之前,我们首先需要理清数据的基本概念。数据是 ...