云服务器内容精选

  • 获取样例工程 通过开源镜像站获取样例工程。 下载样例工程的Maven工程源码和配置文件,并在本地配置好相关开发工具,可参考通过开源镜像站获取样例工程。 根据集群版本选择对应的分支,下载并获取 MRS 相关样例工程。 例如本章节场景对应示例为“hbase-example”样例,获取地址:https://github.com/huaweicloud/huaweicloud-mrs-example/tree/mrs-3.1.0/src/hbase-examples/hbase-example。 本地使用IDEA工具导入样例工程,等待Maven工程下载相关依赖包,具体操作可参考配置并导入样例工程。 图2 HBase样例工程示例 本地配置好Maven及SDK相关参数后,样例工程会自动加载相关依赖包。 将准备应用开发配置文件中获取的集群配置文件及用户认证文件放置在样例工程的“../src/main/resources/conf”目录下。 在“com.huawei.bigdata.hbase.examples”包的“TestMain”类中修改“userName”为实际用户名,例如“developuser”。 private static void login() throws IOException { if (User.isHBaseSecurityEnabled(conf)) { userName = "developuser"; //In Windows environment String userdir = TestMain.class.getClassLoader().getResource("conf").getPath() + File.separator; //In Linux environment //String userdir = System.getProperty("user.dir") + File.separator + "conf" + File.separator; LoginUtil.setJaasConf(ZOOKEEPER_DEFAULT_ LOG IN_CONTEXT_NAME, userName, userKeytabFile); LoginUtil.login(userName, userKeytabFile, krb5File, conf); } } 本样例工程中,假定用户开发一个应用程序,用于管理企业中的使用A业务的用户信息,A业务操作流程如下: 序号 步骤 1 根据已有信息创建表。 2 导入用户数据。 3 增加“教育信息”列族,在用户信息中新增用户的学历、职称等信息。 4 根据用户编号查询用户姓名和地址。 5 根据用户姓名进行查询。 6 为提升查询性能,创建二级索引或者删除二级索引。 7 用户销户,删除用户信息表中该用户的数据。 8 A业务结束后,删除用户信息表。 例如以下创建用户信息表代码片段在com.huawei.bigdata.hbase.examples包的“HBaseSample”类的testCreateTable方法中,其他各功能代码片段详情说明可参考HBase数据读写示例程序。 public void testCreateTable() { LOG.info("Entering testCreateTable."); TableDescriptorBuilder htd = TableDescriptorBuilder.newBuilder(tableName); //创建表描述符 ColumnFamilyDescriptorBuilder hcd = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("info")); //创建列族描述符 hcd.setDataBlockEncoding(DataBlockEncoding.FAST_DIFF); //设置编码算法,HBase提供了DIFF,FAST_DIFF,PREFIX三种编码算法 hcd.setCompressionType(Compression.Algorithm.SNAPPY); htd.setColumnFamily(hcd.build()); //添加列族描述符到表描述符中 Admin admin = null; try { admin = conn.getAdmin(); //获取Admin对象,Admin提供了建表、创建列族、检查表是否存在、修改表结构和列族结构以及删除表等功能。 if (!admin.tableExists(tableName)) { LOG.info("Creating table..."); admin.createTable(htd.build());//调用Admin的建表方法。 LOG.info(admin.getClusterMetrics().toString()); LOG.info(admin.listNamespaceDescriptors().toString()); LOG.info("Table created successfully."); } else { LOG.warn("table already exists"); } } catch (IOException e) { LOG.error("Create table failed " ,e); } finally { if (admin != null) { try { admin.close(); } catch (IOException e) { LOG.error("Failed to close admin " ,e); } } } LOG.info("Exiting testCreateTable."); }
  • 上传jar包及准备源数据 将编译后的jar包上传到客户端节点,例如上传到“/opt/client/sparkdemo”目录下。 如果本地网络无法直接连接客户端节点上传文件,可先将jar文件或者源数据上传至OBS文件系统中,然后通过MRS管理控制台集群内的“文件管理”页面导入HDFS中,再通过HDFS客户端使用hdfs dfs -get命令下载到客户端节点本地。 将用于认证的用户keytab文件也上传到代码中指定位置,例如上传到“/opt/client”目录下。 使用root用户登录安装了集群客户端的节点。 cd /opt/client source bigdata_env kinit sparkuser 创建Hive表并写入初始数据。 beeline 在Hive Beeline命令行中执行以下命令创建表并插入数据。 create table person ( name STRING, account INT ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' ESCAPED BY '\\' STORED AS TEXTFILE; insert into table person(name,account) values("1","100"); select * from person; +--------------+-----------------+ | person.name | person.account | +--------------+-----------------+ | 1 | 100 | +--------------+-----------------+ 创建HBase表并写入初始数据。 退出Hive Beeline命令行,执行spark-beeline,然后执行以下命令创建HBase表。 create table table2 ( key string, cid string ) using org.apache.spark.sql.hbase.HBaseSource options( hbaseTableName "table2", keyCols "key", colsMapping "cid=cf.cid" ); 退出Spark Beeline命令行,执行hbase shell命令,进入HBase Shell命令行,执行以下命令插入数据。 put 'table2', '1', 'cf:cid', '1000' scan 'table2' ROW COLUMN+CELL 1 column=cf:cid, timestamp=2023-06-12T21:12:50.711, value=1000 1 row(s)