20220405 java学习第二天
标识符
1.关键字
abstract | assert | boolean | break | byte |
---|---|---|---|---|
case | catch | char | class | const |
continue | default | do | double | else |
enum | extends | final | finally | float |
for | goto | if | implements | import |
instanceof | int | interface | long | native |
new | package | private | protected | public |
return | strictfp | short | static | super |
switch | synchronized | this | throw | throws |
transient | try | void | volatile | while |
J a v a 所 有 的 组 成 部 分 都 需 要 名 字 。 类 名 , 变 量 名 以 及 方 法 名 都 被 称 为 标 识 符 \color {red} {Java所有的组成部分都需要名字。类名,变量名以及方法名都被称为标识符} Java所有的组成部分都需要名字。类名,变量名以及方法名都被称为标识符
- 所有的标识符都应该以字母(A-Z或者a-z),美元符($),或者下划线(_)开始
- 首字符之后可以是字母(A-Z或者a-z),美元符($),或者下划线(_)或数字的任何字符组合
- 不能使用关键字作为变量名或方法名
- 标识符是大小写敏感的
- 合法标识符举例:age、$salary、_value、_1_value
- 非法标识符举例:123abc、-salary、#abc
可 以 使 用 中 文 命 名 , 但 是 一 般 不 建 议 这 样 去 使 用 , 也 不 建 议 使 用 拼 音 \color{red}{可以使用中文命名,但是一般不建议这样去使用,也不建议使用拼音} 可以使用中文命名,但是一般不建议这样去使用,也不建议使用拼音
数据类型
强类型语言
- 要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用
- 弱类型语言
Java的数据类型分为两类
- 基本类型(primitive type)
- 引用类型(reference type)
基本数据类型
1.数值类型
整数类型:
- byte占1个字节范围:-128~127(2^7)
- short占2个字节范围:-32768~32767(2^15)
- int占4个字节范围:-2147483648~2147483647(2^31)
- long占8个字节范围:(2^63)
浮点类型: - float占4个字节
- double占8个字节
2.boolean类型:占1位,只有true和false
引用数据类型
-
类
-
接口
-
数组
什么是字节
-
位(bit):是计算机内部数据储存的最小单位,11001100是一个八位二进制数;
- 字节(byte):是计算机中数据处理的基本单位,用B表示;
- 1B(byte,字节)= 8bit;
- 字符:指计算机中使用的字母、数字、字和符号。
- 1bit表示1位
- 1Byte表示一个字节 1B=8b
- 1024B=1KB
- 1024KB=1M
- 1024M=1G
什么是Hadoop
- 一个分布式系统基础架构,有Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。
包括: - Distributed File System(HDFS)
- YARN
- MapReduce
官网:http://hadoop.apache.org/
对于Apache的顶级项目来说, projectname.apache.org-
Hadoop:hadoop.apache.org
-
hive:hive.apache.org
-
spark:spark.apache.org
-
Hbase:hbase.apache.org
狭义Hadoop VS 广义Hadoop
- 狭义的Hadoop:是一个适合大数据分布式存储(HDFS)、分布式 计算(MapReduce)和资源调度(YARN)的平台
- 广义的Hadoop:Hadoop生态系统,Hadoop生态系统是一个很庞大的概念,hadoop是其中最重要最基础的一部分;生态系统中的每一个子系统只解决某一个特定的问题域(甚至可能很窄),不搞统一型的一个全能系统而是小而精的多个小系统.
-
分布式文件系统HDFS
什么是HDFS
- Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS
- 源自Google的GFS论文
- 发表于2003年,HDFS是GFS的克隆版
HDFS的设计目标
- 非常巨大的分布式文件系统
- 运行在普通廉价的硬件上
- 易扩展、为用户提供性能不错的文件存储服务
Namenode and Datanode
HDFS架构
1.Master(Namenode/NN)带N个Slaves(Datanode/DN)
HDFS/YARN/HBase
2.1个文件会被拆分成多个Block,blocksize:128MB
130M==>2个Block:128M和2M
NN:
- 负责客户端请求的响应
- 负责元数据(文件的名称、副本系数、Block存放的DN)的管理
DN: - 存储用户的文件对应的数据块(Block)
- 要定期向NN发送心跳信息、汇报本身及所有的block信息,健康状况
Namenode+N个Datanode
建议:NN和DN部署在不同的节点上
replication factor:副本系数、副本因子
All blocks in a file except the last block are the same size.
HDFS副本机制
Hive:类似于sql的Hive QL语言,sql==>mapreduce
特点:mapreduce
改进:hive on tez、hive on spark、hive on mapreduce
Spark:hive on spark ==>shark(hive on spark)
shark推出:欢迎,基于spark,基于内存的的列式存储、与hive能够兼容
缺点:hive ql 的解析、逻辑执行计划生成、执行计划的优化是依赖于hive的,仅仅只是把物理执行计划从mr作业替换成spark作业
Shark终止以后,产生了2个分支:
1):hive on spark
Hive社区,源码是在hive中
2)Spark SQL
Spark社区,源码是在Spark中
支持多种数据源,多种优化技术、扩展性提高很多
SQL on Hadoop
1)Hive
sql =>mapreduce
metastore :元数据
sql:database、table、view
facebook
2)impala
cloudera:cdh(建议大家在生产环境上使用的hadoop系列版本)、cm
metastore
3)presto
facebook
京东使用较多
sql
4)drill
sql
访问:hdfs,rdbms,json,hbase,mangodb,s3,hive
5)Spark SQL
sql
dataframe/dataset api
metastore
访问:访问:hdfs,rdbms,json,hbase,mangodb,s3,hive ==>外部数据源
Spark SQL is a Spark module for structured data processing
Spark SQL它不仅仅有访问或者操作SQL的功能,还提供了其他的非常丰富的操作:外部数据源、优化等
Spark SQL概述小结:
1)Spark SQL 的应用并不局限于SQL;
2)访问hive、json、parquet等文件的数据;
3)SQL只是Spark SQL的一个功能而已;
===>Spark SQL这个名字起的并不恰当
4)Spark SQL提供了SQL的api、DataFrame和Dataset的API