04.hadoop上课笔记之java编程和hbase

1.win查看服务

  netstat -an #linux也有

#R数学建模语言 SCALAR

2.java连接注意事项,代码要设置用户

   System.setProperty("HADOOP_USER_NAME", "hadoop");

3.伪分布式的好处(不用管分布式细节,直接连接一台机器…,适合用于学习)

4.官方文档 查看类(static | new)

hadoop.org —>java API

5.单点故障:一个节点出错全部不可用

6.HBase hadoop database(像nosql的数据库,用列和表,分布式的数据库)

与hdfs的关系:HDFS是Hbase运行的底层文件系统

  1. RegionServer,理解为数据节点,存储数据的。
  2. region 向客户端提供数据和管理
  3. master 负载均衡和管理region(失效把数据移动到别处) 失效了 zookeeper也可以访问
  4. zookeeper 帮助master高可用 帮master监控regionserver 选master 找数据

#其他知识 #信息检索课(怎么查信息)
图hbase #元数据的表名
hbase:meta

04.hadoop上课笔记之java编程和hbase_第1张图片

7.安装hbase

  1. 解压
  2. 改配置文件
  3. 启动hadoop
  4. start.sh

8.habse应用场景

1.搜索条件简单,数据量大
2.不强调表之间的关系
3.列存储(直接在列查,不全表扫描,mysql需要索引才可以) 还可以列压缩
如: select age时直接查age列,而不是每个行扫描完扫描列是否满足条件
age 22 23 24
name jamse aa bb

 myql事务 A原子性 atomicity C(consistency)一致性 I独立性(isolation) D (durability)持久性
 mysql where 1=1是关于关系代数的理论, 1=1代表匹配的结果 要不要显示

9.hbash添加语句(不需要多表连接)

   #查看hbase信息 http://192.168.202.103:16010/
    create "tableName","columnName","columnName"
    #查看帮助,必须要"" 
     help "create"
    #看结构
      desc "tableName"
   #hbase  http://192.168.202.103:16030/rs-status
  #插入一个数据必须需要id 列族:更小字段
     put 'student_xxx','0001','stuinfo:name','tom' 
  #select
    scan 'student_xxx'
   #update
    put 'student_xxx','0001','stuinfo:name','tomy'
    #id可以不写字段
   put 'student_xxx','07112001','info:name','Benie',3 #修改版本
   #修改列的版本,改一个列对象的版本
    alter 'student_xxx',{NAME=>'stuinfo',VERSIONS=>5}
   #增加一个列
     alter 'student_xxx','grades'
   #删除列
      alter 'student_xxx','delete'=>'grades'
   #删除写错的数据 表 id 列:字段(没有写id字段,hbase会自动生成一个),所    #以可以省字段名
      delete 'student_xxx','07112002','info:name'
  #hbase不会自己添加版本,1个版本可能有多个数据,
  #得到版本为3的
   get 'student_xxx','0001',{COLUMN=>'stuinfo:name',VERSIONS=>3}
    get 'student_xxx','0001'
  #先禁用后删除table
    disable   xxx
   drop       xxx
    #查看表是否存在
     exists xxx
     #查看列字段的数据 
      scan 'student_xxx',{COLUMNS=>'info:name'}
   #查看多个字段的数据,不用id
   scan 'student_xxx',{COLUMNS=>['info:name','relationship:father']}
  #指定id数据区间,不包含最后一行
    scan 'student_xxx',{STARTROW=>'07112001',ENDROW=>'07112002'}
   #限制条数
    scan 'student_xxx',{LIMIT=>2}
   #删除版本为3 的
      delete 'student_xxx','07112001','info:name',3
   #删除整行
      deleteall 'student_xxx','07112003'
   #删除整表
   truncate  'student_xxx'
    #mysql数据导入hbase

#语法少了错了没有提示 list 或ctrl+c退出 #数据的属性在列中 VERSION所有列可以保存的版本数,TTL 是秒数
到期删除(密码,验证码)
#IN_MEMORY是否加载到内存

10.理论(毕业设计)

  1. region(按行键[id]划分,最初有1个,一般1g)(读列速度快,因为放在不同机器)
    1. 是hbase负载均衡(分开处理资源)的最小单元
    2. 一个region对应多个store(存列,和行的键)包含memstore(先写入内存)和filestore(内存写入磁盘)
    flush ‘columns’ #需要写这个才能写入磁盘,如果不写默认需要1个小时才能写入
  2. 写入相同文件只多一个文件,可以记录历史记录,存在内存为了排序,放入磁盘
    #Hlog(wals)避免内存数据丢失,在写入内存之前备份,只有1个,不能大于1000个region,
    #查看日志文件 /usr/local/hbase/hbase-tmp/logs/xxxregion-server

11.hbase集群 复制到别人的机器

   scp 
  #会报错,需要改配置文件,连接java,要改host配置文件

12.Hbase的特点

① 半结构化或非结构化数据(变化的数据)
② 记录非常稀疏(没有表结构,null不占空间)
③ 多版本数据(可能要用以前写入的数据)
④ 超大数据量(自动水平切分)

12.Hbase特点(没有多表连接,直接是一个表,因为用列存储)

  1. 大:一个表可以有数十亿行,上百万列;

  2. 无模式:每行都有一个可排序的主键和任意多的列,列可以根据需要动态的增加,同一张表中不同的行可以有截然不同的列;

  3. 面向列:面向列(族)的存储和权限控制,列(族)独立检索;

  4. 稀疏:空(null)列并不占用存储空间

  5. 数据多版本:每个单元中的数据可以有多个版本,默认情况下版本号自动分配,是单元格插入时的时间戳;

  6. 数据类型单一:Hbase中的数据都是字符串,没有类型 !!!

10.HBase和hdfs区别

  1. hbase只有字符串类型
  2. hbase一张表,传统要考虑多表关系
  3. 存储模式:Hbase是基于列存储的,每列由每个文件存储
  4. 数据维护:Hbase的更新实际上是插入了新的数据;传统数据库只是替换和修改
  5. 可伸缩性:Hbase
  6. 事务:Hbase只可以实现单行的事务性,传统数据库是可以实现跨行的事务性。

你可能感兴趣的:(hadoop,笔记,java)