HBase

[Hbase]一 HBase基础 HBase数据模型的关键在于 稀疏、分布式、多维、排序 的映射。其中映射 map指代非关系型数据库的 key-Value结构。 阅读详情

HBase简介

HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。HBase利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase中的海量数据,利用Zookeeper作为协调工具。

这里写图片描述

主键:Row Key

主键是用来检索记录的主键,访问hbase table中的行,只有三种方式
1. 通过单个row key访问
2. 通过row key的range
3. 全表扫描

列族:Column Family

列族在创建表的时候声明,一个列族可以包含多个列,列中的数据都是以二进制形式存在,没有数据类型。

时间戳:timestamp

HBase中通过row和columns确定的为一个存贮单元称为cell。每个 cell都保存着同一份数据的多个版本。版本通过时间戳来索引

HBASE基础知识

表结构

HBase中有两张特殊的Table,-ROOT-和.META.
-ROOT- :记录了.META.表的Region信息,-ROOT-只有一个region
.META. :记录了用户创建的表的Region信息,.META.可以有多个regoin

Zookeeper中记录了-ROOT-表的location

Client访问用户数据之前需要首先访问zookeeper,然后访问-ROOT-表,接着访问.META.表,最后才能找到用户数据的位置去访问

物理存储

Table 在行的方向上分割为多个HRegion,一个region由[startkey,endkey)表示

架构体系

◆ Client 包含访问hbase 的接口,client 维护着一些cache 来加快对hbase 的访问,比如regione 的位置信息

◆ Zookeeper

  • 保证任何时候,集群中只有一个running master
  • 存贮所有Region 的寻址入口
  • 实时监控Region Server 的状态,将Region server 的上线和下线信息,实时通知给Master
  • 存储Hbase 的schema,包括有哪些table,每个table 有哪些column family

◆ Master 可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个Master运行

  • 为Region server 分配region
  • 负责region server 的负载均衡
  • 发现失效的region server 并重新分配其上的region

Region Server

  • 维护Master 分配给它的region,处理对这些region 的IO 请求
  • 负责切分在运行过程中变得过大的region

可以看出,client 访问hbase 上数据的过程并不需要master 参与,寻址访问先zookeeper再regionserver,数据读写访问regioneserver。HRegionServer主要负责响应用户I/O请求,向HDFS文件系统中读写数据,是HBase中最核心的模块。

这里写图片描述

这里写图片描述

HBase集群搭建

1.上传hbase安装包

2.解压

3.配置hbase集群,要修改3个文件(首先zk集群已经安装好了)

注意:要把hadoop的hdfs-site.xml和core-site.xml 放到hbase/conf下

  • 3.1 修改hbase-env.sh
    export JAVA_HOME=/usr/java/jdk1.7.0_55
    //告诉hbase使用外部的zk
    export HBASE_MANAGES_ZK=false

vim hbase-site.xml

    <configuration>
        <!-- 指定hbase在HDFS上存储的路径 -->
        <property>
                <name>hbase.rootdir</name>
                <value>hdfs://ns1/hbase</value>
        </property>
        <!-- 指定hbase是分布式的 -->
        <property>
                <name>hbase.cluster.distributed</name>
                <value>true</value>
        </property>
        <!-- 指定zk的地址,多个用“,”分割 -->
        <property>
                <name>hbase.zookeeper.quorum</name>
                <value>master:2181,slave01:2181,slave02:2181</value>
        </property>
    </configuration>
vim regionservers
slave01
slave02
  • 3.2 拷贝hbase到其他节点
        scp -r /home/elon/opt/modules/hbase-0.96.2-hadoop2/ slave01:/home/elon/opt/modules/
        scp -r /home/elon/opt/modules/hbase-0.96.2-hadoop2/ slave02:/home/elon/opt/modules/

4.将配置好的HBase拷贝到每一个节点并同步时间。

5.启动所有的hbase

  • 分别启动zk
    ./zkServer.sh start
  • 启动hdfs集群
    start-dfs.sh
  • 启动hbase,在主节点上运行
    start-hbase.sh

6.通过浏览器访问hbase管理页面
192.168.1.80:60010
7.为保证集群的可靠性,要启动多个HMaster
hbase-daemon.sh start master

HBase Shell

  • 进入hbase命令行
    ./hbase shell

  • 显示hbase中的表
    list

  • 创建user表,包含info、data两个列族
    create ‘user’, ‘info1’, ‘data1’
    create ‘user’, {NAME => ‘info’, VERSIONS => ‘3’}

  • 向user表中插入信息,row key为rk0001,列族info中添加name列标示符,值为zhangsan
    put ‘user’, ‘rk0001’, ‘info:name’, ‘zhangsan’

  • 向user表中插入信息,row key为rk0001,列族info中添加gender列标示符,值为female
    put ‘user’, ‘rk0001’, ‘info:gender’, ‘female’

  • 向user表中插入信息,row key为rk0001,列族info中添加age列标示符,值为20
    put ‘user’, ‘rk0001’, ‘info:age’, 20

  • 向user表中插入信息,row key为rk0001,列族data中添加pic列标示符,值为picture
    put ‘user’, ‘rk0001’, ‘data:pic’, ‘picture’

  • 获取user表中row key为rk0001的所有信息
    get ‘user’, ‘rk0001’

  • 获取user表中row key为rk0001,info列族的所有信息
    get ‘user’, ‘rk0001’, ‘info’

  • 获取user表中row key为rk0001,info列族的name、age列标示符的信息
    get ‘user’, ‘rk0001’, ‘info:name’, ‘info:age’

  • 获取user表中row key为rk0001,info、data列族的信息
    get ‘user’, ‘rk0001’, ‘info’, ‘data’
    get ‘user’, ‘rk0001’, {COLUMN => [‘info’, ‘data’]}
    get ‘user’, ‘rk0001’, {COLUMN => [‘info:name’, ‘data:pic’]}

  • 获取user表中row key为rk0001,列族为info,版本号最新5个的信息
    get ‘user’, ‘rk0001’, {COLUMN => ‘info’, VERSIONS => 2}
    get ‘user’, ‘rk0001’, {COLUMN => ‘info:name’, VERSIONS => 5}
    get ‘user’, ‘rk0001’, {COLUMN => ‘info:name’, VERSIONS => 5, TIMERANGE => [1392368783980, 1392380169184]}

  • 获取user表中row key为rk0001,cell的值为zhangsan的信息
    get ‘people’, ‘rk0001’, {FILTER => “ValueFilter(=, ‘binary:图片’)”}

  • 获取user表中row key为rk0001,列标示符中含有a的信息
    get ‘people’, ‘rk0001’, {FILTER => “(QualifierFilter(=,’substring:a’))”}

put ‘user’, ‘rk0002’, ‘info:name’, ‘fanbingbing’
put ‘user’, ‘rk0002’, ‘info:gender’, ‘female’
put ‘user’, ‘rk0002’, ‘info:nationality’, ‘中国’
get ‘user’, ‘rk0002’, {FILTER => “ValueFilter(=, ‘binary:中国’)”}

  • 查询user表中的所有信息
    scan ‘user’

  • 查询user表中列族为info的信息
    scan ‘user’, {COLUMNS => ‘info’}
    scan ‘user’, {COLUMNS => ‘info’, RAW => true, VERSIONS => 5}
    scan ‘persion’, {COLUMNS => ‘info’, RAW => true, VERSIONS => 3}

  • 查询user表中列族为info和data的信息
    scan ‘user’, {COLUMNS => [‘info’, ‘data’]}
    scan ‘user’, {COLUMNS => [‘info:name’, ‘data:pic’]}

  • 查询user表中列族为info、列标示符为name的信息
    scan ‘user’, {COLUMNS => ‘info:name’}

  • 查询user表中列族为info、列标示符为name的信息,并且版本最新的5个
    scan ‘user’, {COLUMNS => ‘info:name’, VERSIONS => 5}

  • 查询user表中列族为info和data且列标示符中含有a字符的信息
    scan ‘user’, {COLUMNS => [‘info’, ‘data’], FILTER => “(QualifierFilter(=,’substring:a’))”}

  • 查询user表中列族为info,rk范围是[rk0001, rk0003)的数据
    scan ‘people’, {COLUMNS => ‘info’, STARTROW => ‘rk0001’, ENDROW => ‘rk0003’}

  • 查询user表中row key以rk字符开头的
    scan ‘user’,{FILTER=>”PrefixFilter(‘rk’)”}

  • 查询user表中指定范围的数据
    scan ‘user’, {TIMERANGE => [1392368783980, 1392380169184]}

  • 删除数据

    • 删除user表row key为rk0001,列标示符为info:name的数据
      delete ‘people’, ‘rk0001’, ‘info:name’
    • 删除user表row key为rk0001,列标示符为info:name,timestamp为1392383705316的数据
      delete ‘user’, ‘rk0001’, ‘info:name’, 1392383705316
  • 清空user表中的数据
    truncate ‘people’

  • 修改表结构

    • 首先停用user表(新版本不用)
      disable ‘user’
    • 添加两个列族f1和f2
      alter ‘people’, NAME => ‘f1’
      alter ‘user’, NAME => ‘f2’
    • 启用表
      enable ‘user’

disable 'user'(新版本不用)
- 删除一个列族
alter ‘user’, NAME => ‘f1’, METHOD => ‘delete’ 或 alter ‘user’, ‘delete’ => ‘f1’

  • 添加列族f1同时删除列族f2
    alter ‘user’, {NAME => ‘f1’}, {NAME => ‘f2’, METHOD => ‘delete’}

  • 将user表的f1列族版本号改为5
    alter ‘people’, NAME => ‘info’, VERSIONS => 5

  • 启用表
    enable ‘user’

  • 删除表
    disable ‘user’
    drop ‘user’

    get 'person', 'rk0001', {FILTER => "ValueFilter(=, 'binary:中国')"}
    get 'person', 'rk0001', {FILTER => "(QualifierFilter(=,'substring:a'))"}
    scan 'person', {COLUMNS => 'info:name'}
    scan 'person', {COLUMNS => ['info', 'data'], FILTER => "(QualifierFilter(=,'substring:a'))"}
    scan 'person', {COLUMNS => 'info', STARTROW => 'rk0001', ENDROW => 'rk0003'}

    scan 'person', {COLUMNS => 'info', STARTROW => '20140201', ENDROW => '20140301'}
    scan 'person', {COLUMNS => 'info:name', TIMERANGE => [1395978233636, 1395987769587]}
    delete 'person', 'rk0001', 'info:name'

    alter 'person', NAME => 'ffff'
    alter 'person', NAME => 'info', VERSIONS => 10

    get 'user', 'rk0002', {COLUMN => ['info:name', 'data:pic']}

HBase的Java API

    // hbase操作必备
    private static Configuration getConfiguration() {
        Configuration conf = HBaseConfiguration.create();
        conf.set("hbase.rootdir", "hdfs://hadoop0:9000/hbase");
        //使用eclipse时必须添加这个,否则无法定位
        conf.set("hbase.zookeeper.quorum", "hadoop0");
        return conf;
    }

    // 创建一张表
    public static void create(String tableName, String columnFamily) throws IOException{
        HBaseAdmin admin = new HBaseAdmin(getConfiguration());
        if (admin.tableExists(tableName)) {
            System.out.println("table exists!");
        }else{
            HTableDescriptor tableDesc = new HTableDescriptor(tableName);
            tableDesc.addFamily(new HColumnDescriptor(columnFamily));
            admin.createTable(tableDesc);
            System.out.println("create table success!");
        }
    }

    // 添加一条记录
    public static void put(String tableName, String row, String columnFamily, String column, String data) throws IOException{
        HTable table = new HTable(getConfiguration(), tableName);
        Put p1 = new Put(Bytes.toBytes(row));
        p1.add(Bytes.toBytes(columnFamily), Bytes.toBytes(column),  Bytes.toBytes(data));
        table.put(p1);
        System.out.println("put'"+row+"',"+columnFamily+":"+column+"','"+data+"'");
    }

    // 读取一条记录
    public static void get(String tableName, String row) throws IOException{
        HTable table = new HTable(getConfiguration(), tableName);
        Get get = new Get(Bytes.toBytes(row));
        Result result = table.get(get);
        System.out.println("Get: "+result);
    }

    // 显示所有数据
    public static void scan(String tableName) throws IOException{
        HTable table = new HTable(getConfiguration(), tableName);
        Scan scan = new Scan();
        ResultScanner scanner = table.getScanner(scan);
        for (Result result : scanner) {
            System.out.println("Scan: "+result);
        }
    }

    // 删除表
    public static void delete(String tableName) throws IOException{
        HBaseAdmin admin = new HBaseAdmin(getConfiguration());
        if(admin.tableExists(tableName)){
            try {
              admin.disableTable(tableName);
              admin.deleteTable(tableName);
            } catch (IOException e) {
              e.printStackTrace();
              System.out.println("Delete "+tableName+" 失败");
            }
        }
        System.out.println("Delete "+tableName+" 成功");
    }
    // main函数
    public static void main(String[] args) throws IOException {
        String tableName="hbase_tb";
        String columnFamily="cf";

        HBaseTestCase.create(tableName, columnFamily);
        HBaseTestCase.put(tableName, "row1", columnFamily, "cl1", "data");
        HBaseTestCase.get(tableName, "row1");
        HBaseTestCase.scan(tableName);
        HBaseTestCase.delete(tableName);
    }

HBASE结合MapReduce批量导入

    static class BatchImportMapper extends Mapper<LongWritable, Text, LongWritable, Text>{
        SimpleDateFormat dateformat1=new SimpleDateFormat("yyyyMMddHHmmss");
        Text v2 = new Text();

        protected void map(LongWritable key, Text value, Context context) throws java.io.IOException ,InterruptedException {
            final String[] splited = value.toString().split("\t");
            try {
                final Date date = new Date(Long.parseLong(splited[0].trim()));
                final String dateFormat = dateformat1.format(date);
                String rowKey = splited[1]+":"+dateFormat;
                v2.set(rowKey+"\t"+value.toString());
                context.write(key, v2);
            } catch (NumberFormatException e) {
                final Counter counter = context.getCounter("BatchImport", "ErrorFormat");
                counter.increment(1L);
                System.out.println("出错了"+splited[0]+" "+e.getMessage());
            }
        };
    }

    static class BatchImportReducer extends TableReducer<LongWritable, Text, NullWritable>{
        protected void reduce(LongWritable key, java.lang.Iterable<Text> values,    Context context) throws java.io.IOException ,InterruptedException {
            for (Text text : values) {
                final String[] splited = text.toString().split("\t");

                final Put put = new Put(Bytes.toBytes(splited[0]));
                put.add(Bytes.toBytes("cf"), Bytes.toBytes("date"), Bytes.toBytes(splited[1]));
                //省略其他字段,调用put.add(....)即可
                context.write(NullWritable.get(), put);
            }
        };
    }

        public static void main(String[] args) throws Exception {
            final Configuration configuration = new Configuration();
            //设置zookeeper
            configuration.set("hbase.zookeeper.quorum", "hadoop0");
            //设置hbase表名称
            configuration.set(TableOutputFormat.OUTPUT_TABLE, "wlan_log");
            //将该值改大,防止hbase超时退出
            configuration.set("dfs.socket.timeout", "180000");

            final Job job = new Job(configuration, "HBaseBatchImport");

            job.setMapperClass(BatchImportMapper.class);
            job.setReducerClass(BatchImportReducer.class);
            //设置map的输出,不设置reduce的输出类型
            job.setMapOutputKeyClass(LongWritable.class);
            job.setMapOutputValueClass(Text.class);

            job.setInputFormatClass(TextInputFormat.class);
            //不再设置输出路径,而是设置输出格式类型
            job.setOutputFormatClass(TableOutputFormat.class);

            FileInputFormat.setInputPaths(job, "hdfs://hadoop0:9000/input");

            job.waitForCompletion(true);
        }

思考题

参考链接

扩展链接

【大数据学习 | HBASE】hbase的写数据流程与hbase插入数据 同hdfs的edits日志文件一样,每个regionserver中都存在一个HLog文件,这个文件主要是hbase的操作日志文件,这个文件内的数据会记录的操作,防止集群损坏后恢复用的。我们知道hbase的一个表为了多个机器并行进行管理和查询,将数据按照行进行拆分为多个region部分,多个region的数据会分散到不同的regionserver中进行管理,这个表全部都是元数据信息,但是这个表也会存在很多region信息,我们应该去那个region中查询meta表的数据呢,这个时候。 阅读详情

相关推荐

HBase理论_HBase架构组件介绍

hbase master采用主备架构,master与regionserver采用主从架构(即一个HMaster会控制多个regionserver),HBase由zookeeper、HMaster、HRegionServer三部分组成,底层数据存储在HDFS上(存储到HDFS中的是Hfile文件)。HBase引入zookeeper,避免HMaster单点问题,HMaster主要负责table和region的管理工作:1 )管理用户的读写操作。

Matrix70的博客 1975

hbase简介

1.HBase简介 1.1 定义 HBase 是一种分布式、可扩展、支持海量数据存储的 NoSQL 数据库。 1.2 HBase数据模型 1.2.1逻辑结构 逻辑上,HBase 的数据模型同关系型数据库很类似,数据存储在一张表中,有行有列。但从 HBase 的底层物理存储结构(K-V)来看,HBase 更像是一个 multi-dimensional map 实际上逻辑表中的数据是稀疏的,有些cell没有值 稀疏数组参考 1.2.2HBase物理存储结构 以上即为稀疏数据.....

u012485099的博客 4万+

HBase安装教程

通过以上步骤,应该能够成功安装并配置HBase集群。如果遇到任何问题,请参考HBase的官方文档或寻求社区的帮助。如果你需要搭建分布式HBase集群,则需要将HBase安装包分发到其他节点上,并在每个节点上执行相应的配置和环境变量设置。

专业深耕,技术前沿 1068

HBase Shell

HBase Shell命令

qq_51180928的博客 2055

Apache Hbase SQL(Phoenix 是基于 Hbase 的 SQL 层)

HBASE_MANAGES_ZK=true 仅用于单机运行,true表示不使用 Zookeeper。分布式模式的开启与关闭 hbase.cluster.distributed。Phoenix 是基于 Hbase 的 SQL 层。请确保你的防火墙放行了 16010 端口。

1199

Hbase实战

本文摘要: 本文详细介绍了HBase数据库的实践操作,包括Shell命令操作、Java API编程和过滤器应用三个核心部分。第一部分通过Shell命令演示了HBase集群启动、命名空间管理、表操作和数据增删改查;第二部分基于Java API实现了命名空间管理、表管理(创建/修改/删除表)和数据操作(增删改查);第三部分重点讲解了多种过滤器的使用,包括列值、列族、组合、分页等过滤器,并提供了完整的Java实现代码。

小张的博客 1593

spark 操作 hbase 之写入 hbase

1 概述 在大数据的应用场景中,hbase常用在实时读写。 写入 HBase 的方法大致有以下几种: ​ 1)Java 调用 HBase 原生 API,HTable.add(List(Put))。 ​ 2)使用 TableOutputFormat 作为输出。 ​ 3)Bulk Load,先将数据按照 HBase 的内部数据格式生成持久化的 HFile 文件,然后复制到合适的位置并通知 RegionServer ,即完成海量数据的入库。其中生成 Hfile 这一步可以选择 MapReduce

heqingcool的博客 4535

HBase的简单学习四

HBase中的行是按照rowkey的字典顺序排序的,这种设计优化了scan操作,可以将相关的行以及会被一起读取的行存取在临近位置,便于scan。然而糟糕的rowkey设计是热点的源头。热点发生在大量的client直接访问集群的一个或极少数个节点(访问可能是读,写或者其他操作)。大量访问会使热点region所在的单个机器超出自身承受能力,引起性能下降甚至region不可用,这也会影响同一个RegionServer上的其他region,由于主机无法服务其他region的请求。

weixin_65909965的博客 1106

windows下启动hbase的步骤

本文详细介绍了在Windows系统下启动HBase的完整流程。首先需要配置JDK 8环境并设置JAVA_HOME变量,建议安装适配Windows的Hadoop版本。核心步骤包括:修改hbase-env.cmd和hbase-site.xml配置文件(区分单机/分布式模式),以管理员权限运行start-hbase.cmd启动服务。启动后可通过jps命令、HBase Shell和Web UI(16010端口)三种方式验证服务状态。文中还提供了常见问题的解决方案,如缺少系统依赖、环境变量配置错误等。特别强调Wind

zhengshi1993的博客 1405

HBase搭建

本文详细介绍了HBase完全分布式集群的搭建流程,集群启动与测试,以及常见的HBase Shell操作

m0_62491477的博客 841

完整的申请邓白氏编码的流程(手把手教你申请邓白氏编码)

申请公司的苹果开发者账号和企业级的苹果开发者账号时,都会用到邓白氏编码,也就是我们申请苹果开发者账号时需要填写的D-U-N-S Number。     申请这个邓白氏编码是免费的,但是从像华夏邓白氏公司提交申请到可以申请苹果开发者账号来用这个9位的D-U-N-S Number,需要一段时间,我申请得到D-U-N-S Number,用了8个工作日(不算周末哦)

wxw2011014003的博客 9万+

hbase配置部署

确保hadoop集群zookeeper集群都是启动状态:jps(如果没启动就start-all.sh)解压安装包:tar -zxvf hbase-2.2.3-bin.tar.gz。进入hbase下的conf,配置:vi hbase-env.sh。让环境变量生效:source /etc/profile。改名:mv hbase-2.2.3 hbase。添加环境变量:vi /etc/profile。配置文件:vi hbase-site.xml。启动hbase:start-hbase.sh。

2402_85053390的博客 1417

centos7下安装gcc-10.3.0

生成多个系统版本的代码,如果你的操作系统是32位,默认就已经设置为 disable,这时gcc仅能生成32位的可执行程序;这里只开启了c,c++ 和fortran,因为支持的语言越多,就需要安装越多的相应静态与动态库,还有五花八门的依赖库,这会让管理变得困难,体积也会变得庞大。启用posix标准的线程支持,这个设置取决于宿主或目标操作系统的类型,其它可用值有:aix,dec,solaris,win32等,如果你是其它的类UNIX系统,就需要设置相应的值。指定安装路径,这里没有指定,就直接放到文件夹里就好。

lxystar2003的博客 1189

【HBase】HBase安装

前言实验步骤1.首先在Linux本地,新建/data/hbase1目录,用于存放所需文件。2.将/data/hbase1目录下,HBase的安装包hbase-1.0.0-cdh5.4.5.tar.gz,解压缩到/apps目录下。3.添加HBase的环境变量。首先使用vim打开用户环境变量文件。4.下面开始配置HBase。切换目录到/apps/hbase/conf目录下,并使用vim编辑hbase-...

码农印象 875

DSI3协议介绍

分布式系统接口(DSI)是一种通用且功能强大的总线协议,旨在将多个遥感器和执行器设备互连到中央控制模块。该网络的主要目标应用是汽车安全系统。这种应用的一些特点是需要低成本、高鲁棒性、中速互连,仅限于两根导线。此外,它必须具有故障安全性、确定性和良好的EMC特性。即使具有所有级别的智能和可编程性的设备都可以连接到网络,远程设备也必须能够通过简单的状态机实现。由于模块尺寸非常重要,因此中央模块和远程单元中的最小组件至关重要。

汽车电子软件领域知识分享 1万+

Linux安装MinIO(图文解说详细版)

最近开个新坑,就是在linux环境中操作开发环境,带大家玩转Linux,会整理出一篇Linux的专栏,欢迎大家订阅!! 富贵同学linux环境为CentOS7.8 版本。 上期跟大家说了一下OpenJDK的安装,这次说一下minio的安装 第一步,进入/opt 目录,创建minio文件夹 cd /opt mkdir minio 第二步,wget下载安装包: wget https://dl.minio.io/server/minio/release/linux-amd64/minio 第三步,进入m

编码人生 5万+

【HBase原理及应用实训课程】第五章 HBase与MapReduce的集成

一、importTSV 工具概述importTSV 是 HBase 提供的一个命令行工具,将存储在 HDFS 上的数据文件,通过指定的分隔符解析后,导入到 HBase 表中。这样的方式导入数据与正常写入流程不同的是,跳过了 WAL、Memcache 与 Flush 的过程,直接将 HFile 文件移动到 HBase 表空间目录下即可,不影响 HRegionServer 的性能。

1857

[QMT量化交易小白入门]-二十四、年化收益47%的全球核心资产轮动策略(含代码解析)

m_days = 25 #动量参考天数period=200m_days被设置为25,表示动量参考的天数为25天;period被设置为200,用于指定获取市场数据的周期长度。

木头大左的博客 2973

HBASE SHELL学习

HBASE SHELL学习

2301_77836489的博客 1820

点云配准3:3d-ndt算法在pcl上的实现以及参数设置

3d-ndt算法在pcl上的使用方法以及参数设置

诺有缸的高飞鸟的博客 7895

【KingSCADA】如何建立硬件系统及相关变量

本篇主要讲解如何定义设备,如何定义变量。KingSCADA3.8的采集系统是指负责和现场设备进行通讯,并采集现场数据和控制现场数据的模块,称之为采集器,也叫IOServer应用,它是一组独立的应用程序,可以脱离KingSCADA3.8软件,它依赖于KingSCADA3.8驱动产品,通过驱动与IO设备进行通讯。采集系统由通讯链路,设备,数据块组成。链路:链路是指计算机通过什么方式(接口)与设备进行连接,链路类别:串口,以太网,GPRS,Modem,通信卡,采集卡,无链路。

做有价值的事,积累有价值的笔记! 1万+

HBASE 安装后 hbase shell 启动失败问题

1, 安装HBASE, 并且启动成功 [root@MASTER opt]# jps 21920 SecondaryNameNode 2273 HMaster 21441 NameNode 5490 ResourceManager 1844 QuorumPeerMain 2501 HRegionServer 21653 DataNode 3532 Jps 22236 No

reylee的博客 1万+

8.时间序列预测

目标:使用历史数据预测未来的销售额。通过以上步骤,可以在Excel中有效进行预测分析,帮助做出更准确的决策通过考虑不同时期数据的影响,可以显著提高预测的准确性。结合多种方法和模型,可以灵活应对复杂的市场环境和变化。

学习,输出==》再学习再输出 891

Hbase日常运维

这个操作是平滑的重启regionserver进程,对服务不会有影响,他会先将需要重启的regionserver上面的所有 region迁移到其它的服务器,然后重启,最后又会将之前的region迁移回来,但我们修改一个配置时,可以用这种方式重启每一台机子,对于hbase regionserver重启,不要直接kill进程,这样会造成在zookeeper.session.timeout这个时间长的中断,也不要通过。当region做split操作的时候,父region会被自动清除掉。

weixin_42795092的博客 1584

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

HBase_Hbase 查看Hbase 版本

我们可以利用 Hbase-shell 进行版本的查看 进入Hbase-shell 后可以看到 hbase版本 [root@cdh-manager ~]# hbase shell Java HotSpot(TM) 64-Bit Server VM warning: Using incremental CMS is deprecated and will likely be remove...

迎难而上 1万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

上一篇: ZooKeeper
下一篇: sqoop
gamedev˚
博客等级 码龄12年 280粉丝 293原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值