华为云用户手册

  • Hive应用开发常用概念 客户端 客户端直接面向用户,可通过Java API、Thrift API访问服务端进行Hive的相关操作。本文中的Hive客户端特指Hive client的安装目录,里面包含通过Java API访问Hive的样例代码。 HiveQL语言 Hive Query Language,类SQL语句。 HCatalog HCatalog是建立在Hive元数据之上的一个表信息管理层,吸收了Hive的DDL命令。为MapReduce提供读写接口,提供Hive命令行接口来进行数据定义和元数据查询。基于Hive的HCatalog功能,Hive、MapReduce开发人员能够共享元数据信息,避免中间转换和调整,能够提升数据处理的效率。 WebHCat WebHCat运行用户通过Rest API来执行Hive DDL,提交MapReduce任务,查询MapReduce任务执行结果等操作。 父主题: Hive应用开发概述
  • HTTP REST API Master REST API:https://docs.alluxio.io/os/restdoc/2.0/master/index.html Worker REST API:https://docs.alluxio.io/os/restdoc/2.0/worker/index.html Proxy REST API:https://docs.alluxio.io/os/restdoc/2.0/proxy/index.html Job REST API:https://docs.alluxio.io/os/restdoc/2.0/job/index.html
  • 应用开发操作步骤 确认 MRS 产品Storm和Kafka组件已经安装,并正常运行。 已搭建Storm示例代码工程,将storm-examples导入到Eclipse开发环境,参见导入并配置Storm样例工程。 用WinScp工具将Storm客户端安装包导入Linux环境并安装客户端,参见准备Linux客户端环境。 如果集群启用了安全服务,需要从管理员处获取一个“人机”用户,用于认证,并且获取到该用户的keytab文件。将获取到的文件拷贝到示例工程的 src/main/resources目录。 获取的用户需要同时属于storm组和kafka组。 下载并安装Kafka客户端程序,参见《Kafka应用开发》。
  • 操作场景 本文档主要说明如何使用Storm-Kafka工具包,完成Storm和Kafka之间的交互。包含KafkaSpout和KafkaBolt两部分。KafkaSpout主要完成Storm从Kafka中读取数据的功能;KafkaBolt主要完成Storm向Kafka中写入数据的功能。 本章节代码样例基于Kafka新API,对应Eclipse工程中com.huawei.storm.example.kafka.NewKafkaTopology.java。 本章节只适用于MRS产品Storm与Kafka组件间的访问。本章中描述的jar包的具体版本信息请以实际情况为准。
  • 部署运行及结果查看 获取相关配置文件,获取方式如下。 安全模式:参见4获取keytab文件。 普通模式:无。 在Storm示例代码根目录执行如下命令打包:"mvn package"。执行成功后,将会在target目录生成storm-examples-1.0.jar。 使用Kafka客户端创建拓扑中所用到的Topic,执行命令。 ./kafka-topics.sh --create --topic input --partitions 2 --replication-factor 2 --zookeeper {ip:port}/kafka ./kafka-topics.sh --create --topic output --partitions 2 --replication-factor 2 --zookeeper {ip:port}/kafka “--zookeeper”后面填写的是ZooKeeper地址,需要改为安装集群时配置的ZooKeeper地址。 安全模式下,需要kafka管理员用户创建Topic。 在Linux系统中完成拓扑的提交。提交命令示例(拓扑名为kafka-test)。 storm jar /opt/jartarget/storm-examples-1.0.jar com.huawei.storm.example.kafka.NewKafkaTopology kafka-test 安全模式下,在提交storm-examples-1.0.jar之前,请确保已经进行kerberos安全登录,并且keytab方式下,登录用户和所上传keytab所属用户必须是同一个用户。 安全模式下,kafka需要用户有相应Topic的访问权限,因此首先需要给用户赋权,再提交拓扑。 拓扑提交成功后,可以向Kafka中发送数据,观察是否有相关信息生成。 在Linux系统中进入Kafka客户端所在目录,在Kafka/kafka/bin目录下启动consumer观察数据是否生成。执行命令: ./kafka-console-consumer.sh --bootstrap-server {ip:port} --topic output --new-consumer --consumer.config ../../../Kafka/kafka/config/consumer.properties 同时在Linux系统中进入Kafka客户端所在目录,在Kafka/kafka/bin目录下启动producer,向Kafka中写入数据。执行命令: ./kafka-console-producer.sh --broker-list {ip:port} --topic input --producer.config ../../../Kafka/kafka/config/producer.properties 向input中写入测试数据,可以观察到output中有对应的数据产生,则说明Storm-Kafka拓扑运行成功。
  • 代码样例 下面代码片段在com.huawei.bigdata.hbase.examples包中。 调用类TestMain下的init()方法会初始化Configuration对象: private static void init() throws IOException { // load hbase client info if(clientInfo == null) { clientInfo = new ClientInfo(CONF_DIR + HBASE_CLIENT_PROPERTIES); restServerInfo = clientInfo.getRestServerInfo(); } // Default load from conf directory conf = HBaseConfiguration.create(); conf.addResource(CONF_DIR + "core-site.xml"); conf.addResource(CONF_DIR + "hdfs-site.xml"); conf.addResource(CONF_DIR + "hbase-site.xml"); }
  • 代码样例 如下是删除文件的代码片段,详细代码请参考com.huawei.bigdata.hdfs.examples中的HdfsMain类。 /** * 删除文件 * * @throws IOException */ private void delete() throws IOException { Path beDeletedPath = new Path(DEST_PATH + File.separator + FILE_NAME); fSystem.deleteOnExit(beDeletedPath); System.out.println("succee to delete the file " + DEST_PATH + File.separator + FILE_NAME); }
  • 开发思路 根据前述场景说明进行功能分解,以上传一个新员工的信息为例,对该员工的信息进行查询、追加、删除等,可分为以下七部分: 通过kerberos认证。 调用fileSystem中的mkdir接口创建目录。 调用HdfsWriter的dowrite接口写入信息。 调用fileSystem中的open接口读取文件。 调用HdfsWriter的doAppend接口追加信息。 调用fileSystem中的deleteOnExit接口删除文件。 调用fileSystem中的delete接口删除文件夹。
  • 场景说明 通过典型场景,可以快速学习和掌握HDFS的开发过程,并对关键的接口函数有所了解。 HDFS的业务操作对象是文件,代码样例中所涉及的文件操作主要包括创建文件夹、写文件、追加文件内容、读文件和删除文件/文件夹;HDFS还有其他的业务处理,例如设置文件权限等,其他操作可以在掌握本代码样例之后,再扩展学习。 本代码样例讲解顺序为: HDFS初始化 初始化HDFS 写文件 写HDFS文件 追加文件内容 追加HDFS文件内容 读文件 读HDFS文件 删除文件 删除HDFS文件 Colocation HDFS Colocation 设置存储策略 设置HDFS存储策略 访问OBS HDFS访问OBS
  • Alluxio客户端运行及结果查看 执行mvn clean compile assembly:single生成jar包,在工程目录target目录下获取,比如:alluxio-examples-mrs-1.9-jar-with-dependencies.jar。 在运行调测环境上创建一个目录作为运行目录,如或“/opt/alluxio_examples”(Linux环境),并在该目录下创建子目录“conf”。 将1导出的alluxio-examples-mrs-1.9-jar-with-dependencies.jar拷贝到“/opt/alluxio_examples”下。 将客户端下的配置文件“/opt/client/Alluxio/alluxio/conf/alluxio-site.properties”拷贝到“conf”下。 当Alluxio集群启动时,每一个Alluxio服务端进程(包括master和worke)在目录“${CLASSPATH}”,“${HOME}/.alluxio/”,“/etc/alluxio/”,和“${ALLUXIO_HOME}/conf”下顺序读取alluxio-site.properties , 当alluxio-site.properties文件被读取到则跳过剩余路径的查找,所以请根据实际环境情况存放alluxio-site.properties文件。 在Linux环境下执行运行样例程序。 chmod +x /opt/alluxio_examples -R cd /opt/alluxio_examples java -jar alluxio-examples-mrs-1.9-jar-with-dependencies.jar /testFlie.txt 在命令行终端查看样例代码所查询出的结果。 Linux环境运行成功结果会有如下信息: hi, I am bigdata. It is successful if you can see me.
  • 回答 由于浏览器所在的计算机IP地址未加到Web访问白名单导致。用户可以通过以下步骤来解决问题。 查看客户端的配置文件“conf/flink-conf.yaml”。 确认配置项“jobmanager.web.ssl.enabled”的值是“false”。 如果不是,请修改配置项的值为“false”。 如果是,请执行3。 确认配置项“jobmanager.web.access-control-allow-origin”和“jobmanager.web.allow-access-address”中是否已经添加浏览器所在的计算机IP地址。如果没有添加,可以通过这两项配置项进行添加。例如: jobmanager.web.access-control-allow-origin: 192.168.252.35,192.168.24.216 jobmanager.web.allow-access-address: 192.168.252.35,192.168.24.216
  • HBase应用开发流程介绍 本文档主要基于Java API对HBase进行应用开发。 开发流程中各阶段的说明如图1和表1所示。 图1 HBase应用程序开发流程 表1 HBase应用开发的流程说明 阶段 说明 参考文档 了解基本概念 在开始开发应用前,需要了解HBase的基本概念,了解场景需求,设计表等。 HBase应用开发常用概念 准备开发环境和运行环境 HBase的应用程序当前推荐使用Java语言进行开发。可使用Eclipse工具。HBase的运行环境即HBase客户端,请根据指导完成客户端的安装和配置。 准备本地应用开发环境 准备工程 HBase提供了不同场景下的样例程序,您可以导入样例工程进行程序学习。或者您可以根据指导,新建一个HBase工程。 导入并配置HBase样例工程 根据场景开发工程 提供了Java语言的样例工程,包含从建表、写入到删除表全流程的样例工程。 HBase样例程序开发思路 编译并运行程序 指导用户将开发好的程序编译并提交运行。 调测程序 查看程序运行结果 程序运行结果会写在用户指定的路径下。用户还可以通过UI查看应用运行情况。 查看HBase应用调测结果 父主题: HBase应用开发概述
  • OpenTSDB应用开发环境简介 在进行二次开发时,要准备的开发环境如表1所示。同时需要准备运行调测的Linux环境,用于验证应用程序运行正常。 表1 开发环境 准备 说明 操作系统 Windows系统,推荐Windows 7及以上版本。 安装JDK 开发环境的基本配置。版本要求:1.8及以上。 安装和配置Eclipse 用于开发OpenTSDB应用程序的工具。 网络 确保客户端与OpenTSDB服务主机在网络上互通。 父主题: 准备OpenTSDB应用开发环境
  • 功能简介 Spark的REST API以JSON格式展现Web UI的一些指标,提供用户一种更简单的方法去创建新的展示和监控的工具,并且支持查询正在运行的app和已经结束的app的相关信息。开源的Spark REST接口支持对Jobs、Stages、Storage、Environment和Executors的信息进行查询,MRS版本中添加了查询SQL、JDBC/ODBC Server和Streaming的信息的REST接口。开源REST接口完整和详细的描述请参考官网上的文档以了解其使用方法:https://spark.apache.org/docs/2.2.2/monitoring.html#rest-api。
  • REST API增强 SQL相关的命令:获取所有SQL语句和执行时间最长的SQL语句 SparkUI命令: curl https://192.168.195.232:26001/proxy/application_1476947670799_0053/api/v1/applications/Spark-JD BCS erverapplication_1476947670799_0053/SQL?mode=monitoring --insecure 其中192.168.195.232为ResourceManager主节点的业务IP,26001为ResourceManager的端口号,application_1476947670799_0053为在YARN中的应用ID,Spark-JDB CS erver是Spark应用的name。 JobHistory命令: curl https://192.168.227.16:22500/api/v1/applications/application_1478570725074_0004-part1/SQL?mode=monitoring --insecure 其中192.168.227.16为JobHistory节点的业务IP,22500为JobHistory的端口号,application_1478570725074_0004-part1为应用ID。 结果: SparkUI命令和JobHistory命令的查询结果均为: { "longestDurationOfCompletedSQL" : [ { "id" : 0, "status" : "COMPLETED", "description" : "getCallSite at SQLExecution.scala:48", "submissionTime" : "2016/11/08 15:39:00", "duration" : "2 s", "runningJobs" : [ ], "successedJobs" : [ 0 ], "failedJobs" : [ ] } ], "sqls" : [ { "id" : 0, "status" : "COMPLETED", "description" : "getCallSite at SQLExecution.scala:48", "submissionTime" : "2016/11/08 15:39:00", "duration" : "2 s", "runningJobs" : [ ], "successedJobs" : [ 0 ], "failedJobs" : [ ] }] } 结果分析: 通过这个命令,可以查询当前应用的所有SQL语句的信息(即结果中“sqls”的部分),执行时间最长的SQL语句的信息(即结果中“longestDurationOfCompletedSQL”的部分)。每个SQL语句的信息如下表3。 表3 SQL的常用信息 参数 描述 id SQL语句的ID status SQL语句的执行状态,有RUNNING、COMPLETED、FAILED三种 runningJobs SQL语句产生的job中,正在执行的job列表 successedJobs SQL语句产生的job中,执行成功的job列表 failedJobs SQL语句产生的job中,执行失败的job列表
  • 准备运行环境 安装客户端。在节点上安装客户端,如安装到“/opt/client”目录。 确认服务端Spark组件已经安装,并正常运行。 客户端运行环境已安装1.7或1.8版本的JDK。 获取并解压缩安装包“MRS_Spark_Client.tar”。执行如下命令解压。 tar -xvf MRS_Spark_Client.tar tar -xvf MRS_Spark_ClientConfig.tar 由于不兼容老版本客户端,建议用户获取与服务端集群相同版本的客户端安装包进行安装部署。 进入解压文件夹,即“MRS_Spark_ClientConfig”,执行下列命令安装客户端 sh install.sh /opt/client 其中“/opt/client”为用户自定义路径,此处仅为举例。 进入客户端安装目录“/opt/client”,执行下列命令初始化环境变量。 source bigdata_env
  • REST接口 通过以下命令可跳过REST接口过滤器获取相应的应用信息。 获取JobHistory中所有应用信息: 命令: curl https://192.168.227.16:18080/api/v1/applications?mode=monitoring --insecure 其中192.168.227.16为JobHistory节点的业务IP,18080为JobHistory的端口号。 结果: [ { "id" : "application_1478570725074_0042", "name" : "Spark-JDBCServer", "attempts" : [ { "startTime" : "2016-11-09T16:57:15.237CST", "endTime" : "2016-11-09T17:01:22.573CST", "lastUpdated" : "2016-11-09T17:01:22.614CST", "duration" : 247336, "sparkUser" : "spark", "completed" : true } ] }, { "id" : "application_1478570725074_0047-part1", "name" : "SparkSQL::192.168.169.84", "attempts" : [ { "startTime" : "2016-11-10T11:57:36.626CST", "endTime" : "1969-12-31T07:59:59.999CST", "lastUpdated" : "2016-11-10T11:57:48.613CST", "duration" : 0, "sparkUser" : "admin", "completed" : false } ] }] 结果分析: 通过这个命令,可以查询当前集群中所有的Spark应用(包括正在运行的应用和已经完成的应用),每个应用的信息如下表 1 。 表1 应用常用信息 参数 描述 id 应用的ID name 应用的Name attempts 应用的尝试,包含了开始时间、结束时间、执行用户、是否完成等信息 获取JobHistory中某个应用的信息: 命令: curl https://192.168.227.16:18080/api/v1/applications/application_1478570725074_0042?mode=monitoring --insecure 其中192.168.227.16为JobHistory节点的业务IP,18080为JobHistory的端口号,application_1478570725074_0042为应用的id。 结果: { "id" : "application_1478570725074_0042", "name" : "Spark-JDBCServer", "attempts" : [ { "startTime" : "2016-11-09T16:57:15.237CST", "endTime" : "2016-11-09T17:01:22.573CST", "lastUpdated" : "2016-11-09T17:01:22.614CST", "duration" : 247336, "sparkUser" : "spark", "completed" : true } ] } 结果分析: 通过这个命令,可以查询某个Spark应用的信息,显示的信息如表1所示。 获取正在执行的某个应用的Executor信息: 针对alive executor命令: curl https://192.168.169.84:26001/proxy/application_1478570725074_0046/api/v1/applications/application_1478570725074_0046/executors?mode=monitoring --insecure 针对全部executor(alive&dead)命令: curl https://192.168.169.84:26001/proxy/application_1478570725074_0046/api/v1/applications/application_1478570725074_0046/allexecutors?mode=monitoring --insecure 其中192.168.195.232为ResourceManager主节点的业务IP,26001为ResourceManager的端口号,application_1478570725074_0046为在YARN中的应用ID。 结果: [{ "id" : "driver", "hostPort" : "192.168.169.84:23886", "isActive" : true, "rddBlocks" : 0, "memoryUsed" : 0, "diskUsed" : 0, "activeTasks" : 0, "failedTasks" : 0, "completedTasks" : 0, "totalTasks" : 0, "totalDuration" : 0, "totalInputBytes" : 0, "totalShuffleRead" : 0, "totalShuffleWrite" : 0, "maxMemory" : 278019440, "executorLogs" : { } }, { "id" : "1", "hostPort" : "192.168.169.84:23902", "isActive" : true, "rddBlocks" : 0, "memoryUsed" : 0, "diskUsed" : 0, "activeTasks" : 0, "failedTasks" : 0, "completedTasks" : 0, "totalTasks" : 0, "totalDuration" : 0, "totalInputBytes" : 0, "totalShuffleRead" : 0, "totalShuffleWrite" : 0, "maxMemory" : 555755765, "executorLogs" : { "stdout" : "https://XTJ-224:26010/node/containerlogs/container_1478570725074_0049_01_000002/admin/stdout?start=-4096", "stderr" : "https://XTJ-224:26010/node/containerlogs/container_1478570725074_0049_01_000002/admin/stderr?start=-4096" } } ] 结果分析: 通过这个命令,可以查询当前应用的所有Executor信息(包括Driver),每个Executor的信息包含如下表 2所示的常用信息。 表2 Executor常用信息 参数 描述 id Executor的ID hostPort Executor所在节点的ip:端口 executorLogs Executor的日志查看路径
  • Hive应用开发流程介绍 开发流程中各阶段的说明如图1和表1所示。 图1 Hive应用程序开发流程 表1 Hive应用开发的流程说明 阶段 说明 参考文档 了解基本概念 在开始开发应用前,需要了解Hive的基本概念。 Hive应用开发常用概念 准备开发和运行环境 Hive的应用程序支持使用Java、Python两种语言进行开发。推荐使用Eclipse工具,请根据指导完成不同语言的开发环境配置。 Hive应用开发环境简介 根据场景开发工程 提供了Java、Python两种不同语言的样例工程,还提供了从建表、数据加载到数据查询的样例工程。 Hive样例程序开发思路 运行程序及查看结果 指导用户将开发好的程序编译提交运行并查看结果。 在Linux中调测Hive JDBC应用 在Linux中调测Hive HCatalog应用 父主题: Hive应用开发概述
  • 回答 问题原因: 在IBM JDK下建立的JDBC connection时间超过登录用户的认证超时时间(默认一天),导致认证失败。 IBM JDK的机制跟Oracle JDK的机制不同,IBM JDK在认证登录后的使用过程中做了时间检查却没有检测外部的时间更新,导致即使显式调用relogin也无法得到刷新。 解决措施: 通常情况下,在发现JDBC connection不可用的时候,可以关闭该connection,重新创建一个connection继续执行。
  • 安全认证代码 目前是统一调用LoginUtil类进行安全认证。 在MapReduce样例工程代码中,test@HADOOP.COM、user.keytab和krb5.conf为示例,实际操作时请联系管理员获取相应账号对应权限的keytab文件和krb5.conf文件,并将keytab文件和krb5.conf文件放入到样例代码中的conf目录,安全登录方法如下代码所示。 认证信息需要根据实际环境修改。 public static final String PRINCIPAL= "test@HADOOP.COM"; public static final String KEYTAB = FemaleInfoCollector.class.getClassLoader().getResource("user.keytab").getPath(); public static final String KRB = FemaleInfoCollector.class.getClassLoader().getResource("krb5.conf").getPath(); // 判断是否为安全模式 if("kerberos".equalsIgnoreCase(conf.get("hadoop.security.authentication"))){ //安全登录 System.setProperty("java.security.krb5.conf", KRB); LoginUtil.login(PRINCIPAL, KEYTAB, KRB, conf); }
  • 场景说明 在kerberos认证集群环境下,各个组件之间的相互通信不能够简单的互通,而需要在通信之前进行相互认证,以确保通信的安全性。 用户在提交MapReduce应用程序时,需要与Yarn、HDFS等之间进行通信。那么提交MapReduce的应用程序中需要写入安全认证代码,确保MapReduce程序能够正常运行。 安全认证有两种方式。 命令行认证 提交MapReduce应用程序运行前,在MapReduce客户端执行如下命令获得认证。 kinit 组件业务用户 代码认证 通过获取客户端的principal和keytab文件在应用程序中进行认证。
  • 代码样例 以下代码片段在com.huawei.bigdata.hbase.examples包的“HBaseExample”类的testFilterList方法中 public void testFilterList() { LOG .info("Entering testFilterList."); Table table = null; // Instantiate a ResultScanner object. ResultScanner rScanner = null; try { // Create the Configuration instance. table = conn.getTable(tableName); // Instantiate a Get object. Scan scan = new Scan(); scan.addColumn(Bytes.toBytes("info"), Bytes.toBytes("name")); // Instantiate a FilterList object in which filters have "and" // relationship with each other. FilterList list = new FilterList(Operator.MUST_PASS_ALL); // Obtain data with age of greater than or equal to 20. list.addFilter(new SingleColumnValueFilter(Bytes.toBytes("info"), Bytes.toBytes("age"), CompareOp.GREATER_OR_EQUAL, Bytes.toBytes(new Long(20)))); // Obtain data with age of less than or equal to 29. list.addFilter(new SingleColumnValueFilter(Bytes.toBytes("info"), Bytes.toBytes("age"), CompareOp.LESS_OR_EQUAL, Bytes.toBytes(new Long(29)))); scan.setFilter(list); // Submit a scan request. rScanner = table.getScanner(scan); // Print query results. for (Result r = rScanner.next(); r != null; r = rScanner.next()) { for (Cell cell : r.rawCells()) { LOG.info(Bytes.toString(CellUtil.cloneRow(cell)) + ":" + Bytes.toString(CellUtil.cloneFamily(cell)) + "," + Bytes.toString(CellUtil.cloneQualifier(cell)) + "," + Bytes.toString(CellUtil.cloneValue(cell))); } } LOG.info("Filter list successfully."); } catch (IOException e) { LOG.error("Filter list failed ", e); } finally { if (rScanner != null) { // Close the scanner object. rScanner.close(); } if (table != null) { try { // Close the HTable object. table.close(); } catch (IOException e) { LOG.error("Close table failed ", e); } } } LOG.info("Exiting testFilterList."); }
  • 准备本地应用开发环境 在进行应用开发时,要准备的开发环境如表1所示。同时需要准备运行调测的Linux环境,用于验证应用程序运行正常。 表1 开发环境 准备项 说明 操作系统 开发环境:Windows系统。 运行环境:Linux系统 安装JDK 开发和运行环境的基本配置。版本要求如下: MRS集群的服务端和客户端仅支持自带的Oracle JDK(版本为1.8),不允许替换。 对于客户应用需引用SDK类的Jar包运行在客户应用进程中的,支持Oracle JDK和IBM JDK。 Oracle JDK:支持1.7和1.8版本。 IBM JDK:推荐1.7.8.10、1.7.9.40和1.8.3.0版本。 说明: 如果开发环境使用的是JDK1.7版本,则Flink集群的运行环境可以是JDK1.7也可以是JDK1.8。 如果开发环境使用的是JDK1.8版本,则Flink集群的运行环境必须是JDK1.8,否则,如果运行环境是JDK1.7,则会报JDK版本错误的信息。 安装和配置IDEA 用于开发Flink应用程序的工具。版本要求:14.1.7。 安装Scala Scala开发环境的基本配置。版本要求:2.11.12。 安装Scala插件 Scala开发环境的基本配置。版本要求:1.5.4。 准备开发用户 参考准备Flink应用开发用户章节配置。 安装客户端 参考安装Flink客户端章节配置。 父主题: 准备Flink应用开发环境
  • Client HDFS Client主要包括五种方式:JAVA API、C API、Shell、HTTP REST API、WEB UI。 Java API 提供HDFS文件系统的应用接口,本开发指南主要介绍如何使用Java APIHDFS Java API接口介绍 HDFS文件系统的应用开发。 C API 提供HDFS文件系统的应用接口,使用C语言开发的用户可参考C接口HDFS C API接口介绍 的描述进行应用开发。 Shell 提供shell命令 HDFS Shell命令介绍 完成HDFS文件系统的基本操作。 HTTP REST API 提供除Shell、Java API和C API以外的其他接口,可通过此接口 HDFS HTTP REST API接口介绍 监控HDFS状态等信息。 WEB UI 提供Web可视化组件管理界面。
  • 操作步骤 对于Scala开发环境,推荐使用IDEA工具,安装要求如下。 JDK使用1.7版本(或1.8版本) IntelliJ IDEA(版本:13.1.6) Scala(版本:2.11.8) Scala插件(版本:0.35.683) Spark不支持当客户端程序使用IBM JDK 1.7运行时,使用yarn-client模式向服务端提交Spark任务。 Oracle JDK需进行安全加固,具体操作如下。 到Oracle官方网站获取与JDK版本对应的JCE(Java Cryptography Extension)文件。JCE文件解压后包含“local_policy.jar”和“US_export_policy.jar”。拷贝jar包到如下路径。 Linux:JDK安装目录/jre/lib/security Windows:JDK安装目录\jre\lib\security 将“客户端安装目录/JDK/jdk/jre/lib/ext/”目录下“ SMS 4JA.jar”拷贝到如下路径。 Linux:JDK安装目录/jre/lib/ext/ Windows:JDK安装目录\jre\lib\ext\ 安装IntelliJ IDEA、JDK和Scala工具,并进行相应的配置。 安装JDK。 安装IntelliJ IDEA。 安装Scala工具。 在IntelliJ IDEA中配置JDK。 打开IntelliJ IDEA,选择“Configure”。 图1 Quick Start 在“Configure”页面中选择的“Project Defaults”。 图2 Configure 在“Project Defaults”页面中,选择“Project Structure”。 图3 Project Defaults 在打开的“Project Structure”页面中,选择“SDKs”,单击绿色加号添加JDK。 图4 添加JDK 在弹出的“Select Home Directory for JDK”窗口,选择对应的JDK目录,然后单击“OK”。 图5 选择JDK目录 完成JDK选择后,单击“OK”完成配置。 图6 完成JDK配置 在IntelliJ IDEA中安装Scala插件。 在“Configure”页面,选择“Plugins”。 图7 Plugins 在“Plugins”页面,选择“Install plugin from disk”。 图8 Install plugin from disk 在“Choose Plugin File”页面,选择对应版本的Scala插件包,单击“OK”。 在“Plugins”页面,单击“Apply”安装Scala插件。 在弹出的“Plugins Changed”页面,单击“Restart”,使配置生效。 图9 Plugins Changed
  • 操作步骤 查看Flink应用运行结果数据。 当用户查看执行结果时,需要在Flink的web页面上查看Task Manager的Stdout日志。 当执行结果输出到文件或者其他由Flink应用程序指定途径,您可以通过指定文件或其他途径获取到运行结果数据。以下用Checkpoint、Pipeline和配置表与流JOIN为例: 查看Checkpoint结果和文件 结果在flink的“taskmanager.out”文件中,用户可以通过Flink的WebUI查看“task manager”标签下的out按钮查看。 有两种方式查看Checkpoint文件。 若将checkpoint的快照信息保存到HDFS,则通过执行hdfs dfs -ls hdfs://hacluster/flink-checkpoint/命令查看。 若将checkpoint的快照信息保存到本地文件,则可直接登录到各个节点查看。 查看Stream SQL Join结果 结果在flink的“taskmanager.out”文件中,用户可以通过Flink的WebUI查看“task manager”标签下的out按钮查看。 使用Flink Web页面查看Flink应用程序运行情况 Flink Web页面主要包括了Overview、Running Jobs、Completed Jobs、Task Managers、Job Manager和Logout等部分。 在YARN的Web UI界面,查找到对应的Flink应用程序。单击应用信息的最后一列“ApplicationMaster”,即可进入Flink Web页面。 查看程序执行的打印结果:找到对应的Task Manager,查看对应的Stdout标签日志信息。 查看Flink日志获取应用运行情况 有两种方式获取Flink日志,分别为通过Flink Web页面或者Yarn的日志 Flink Web页面可以查看Task Managers、Job Manager部分的日志。 Yarn页面主要包括了Job Manager日志以及GC日志等。 页面入口:在YARN的Web UI界面,查找到对应的Flink应用程序。单击应用信息的第一列ID,然后选择Logs列单击进去即可打开。
  • HiveQL接口介绍 HiveQL支持当前使用的MRS Hive与对应开源Hive版本中的所有特性,详情请参见https://cwiki.apache.org/confluence/display/hive/languagemanual。MRS Hive版本与开源Hive版本的对应关系如表1所示。 表1 MRS Hive与开源版本对应关系一览表 MRS版本 开源Hive版本 MRS 1.9.x 2.3.3 父主题: Hive应用开发常见问题
  • Storm应用开发环境简介 本开发指南提供了MRS产品Storm组件基于开源Storm的Eclipse样例工程和常用接口说明,便于开发者快速熟悉Storm开发。 开发环境准备分为应用开发客户端和应用提交客户端;应用开发一般是在Windows环境下进行;应用提交一般是在Linux环境下进行。 在进行二次开发时,要准备的开发环境如表1所示。 表1 开发环境 准备项 说明 操作系统 Windows系统,推荐Windows 7以上版本。 安装JDK 开发环境的基本配置。版本要求:1.7或者1.8。 说明: 基于安全考虑,服务端只支持TLS 1.1和TLS 1.2加密协议,IBM JDK默认TLS只支持1.0,若使用IBM JDK,请配置启动参数“com.ibm.jsse2.overrideDefaultTLS”为“true”,设置后可以同时支持TLS1.0/1.1/1.2。 详情请参见:https://www.ibm.com/support/knowledgecenter/zh/SSYKE2_8.0.0/com.ibm.java.security.component.80.doc/security-component/jsse2Docs/matchsslcontext_tls.html#matchsslcontext_tls 安装和配置Eclipse 用于开发Storm应用程序的工具。 网络 确保客户端与Storm服务主机在网络上互通。 父主题: 准备Storm应用开发环境
  • Kafka 样例工程配置文件说明 Conf目录个各配置文件及重要参数配置说明 Producer API配置项 表1 producer.properties文件配置项 参数 描述 备注 security.protocol 安全协议类型 生产者使用的安全协议类型,当前Kerberos开启的模式下仅支持SASL协议,需要配置为SASL_PLAINTEXT。Kerberos未开启的模式下配置为PLAINTEXT。 kerberos.domain.name 域名 MRS服务集群的Kerberos域名,未开启Kerberos认证的集群无需配置。 sasl.kerberos.service.name 服务名 Kafka集群运行,所使用的Kerberos用户名(需配置为kafka)。未开启Kerberos认证的集群无需配置。 Consumer API配置项 表2 consumer.properties文件配置项 参数 描述 备注 security.protocol 安全协议类型 消费者使用的安全协议类型,当前安全模式下Kerberos开启的模式下仅支持SASL协议,需要配置为SASL_PLAINTEXT。Kerberos未开启的模式下配置为PLAINTEXT。 kerberos.domain.name 域名 MRS服务集群的Kerberos域名,未开启Kerberos认证的集群无需配置。 group.id 消费者的group id - auto.commit.interval.ms 是否自动提交offset 布尔值参数,默认值为true sasl.kerberos.service.name 服务名 Kafka集群运行,所使用的Kerberos用户名(需配置为kafka)。未开启Kerberos认证的集群无需配置。 客户端信息配置项 表3 client.properties文件配置项 参数 描述 备注 metadata.broker.list 元数据Broker地址列表 通过此参数值,创建与元数据Broker之间的连接,需要直接访问元数据的API需要用到此参数。访问端口仅支持不开启Kerberos模式下的端口,端口说明详见Kafka安全接口介绍 kafka.client.zookeeper.principal kafka集群访问zookeeper的认证和域名 - bootstrap.servers Broker地址列表 通过此参数值,创建与Broker之间的连接。端口配置项详见Kafka安全接口介绍 zookeeper.connect zookeeper地址列表 通过此参数,访问zookeeper,末尾需要带上kafka服务名kafka MRS服务是否开启Kerberos认证配置项 表4 kafkaSecurityMode文件配置项 参数 描述 备注 kafka.client.security.mode kafka所在的MRS服务集群是否开启Kerberos认证配置项 若开启了Kerberos认证,设置为yes,否则设置为no。 log4j日志配置项文件log4j.properties log4j日志框架的配置文件,默认情况不输入样例工程运行日志。 父主题: 开发Kafka应用
  • 部署运行及结果查看 在Storm示例代码根目录执行如下命令打包:"mvn package"。执行成功后,将会在target目录生成storm-examples-1.0.jar。 执行命令提交拓扑。 keytab方式下,若用户修改了keytab文件名,如修改为“huawei.keytab”,则需要在命令中增加第二个参数进行说明,提交命令示例(拓扑名为hdfs-test): storm jar /opt/jartarget/storm-examples-1.0.jar com.huawei.storm.example.hdfs.SimpleHDFSTopology hdfs-test huawei.keytab 安全模式下在提交source.jar之前,请确保已经进行kerberos安全登录,并且keytab方式下,登录用户和所上传keytab所属用户必须是同一个用户。 拓扑提交成功后,请登录HDFS集群查看/user/foo目录下是否有文件生成。 如果使用票据登录,则需要使用命令行定期上传票据,具体周期由票据刷新截止时间而定,步骤如下。 在安装好的storm客户端目录的Storm/storm-0.10.0/conf/storm.yaml文件尾部新起一行添加如下内容。 topology.auto-credentials: - backtype.storm.security.auth.kerberos.AutoTGT 执行命令:./storm upload-credentials hdfs-test
共100000条