云服务器内容精选
-
登录 MRS Manager 登录MRS管理控制台页面。 在“现有集群” 列表,单击指定的集群名称,进入集群信息页面。 单击“点击管理”,打开“访问MRS Manager页面”。 若用户创建集群时已经绑定弹性公网IP,如图1所示。 选择待添加的安全组规则所在安全组,该安全组在创建群时配置。 添加安全组规则,默认填充的是用户访问公网IP地址9022端口的规则,如需开放多个IP段为可信范围用于访问MRS Manager页面,请参考添加安全组规则。如需对安全组规则进行查看,修改和删除操作,请单击“管理安全组规则”。 自动获取的访问公网IP与用户本机IP不一致,属于正常现象,无需处理。 9022端口为knox的端口,需要开启访问knox的9022端口权限,才能访问MRS Manager服务。 勾选“我确认xx.xx.xx.xx为可信任的公网访问IP,并允许从该IP访问MRS Manager页面。” 图1 添加访问MRS Manager的安全组规则 若用户创建集群时暂未绑定弹性公网IP,如图2所示。 在弹性公网IP下拉框中选择可用的弹性公网IP或单击“管理弹性公网IP”创建弹性公网IP。 选择待添加的安全组规则所在安全组,该安全组在创建群时配置。 添加安全组规则,默认填充的是用户访问公网IP地址9022端口的规则,如需开放多个IP段为可信范围用于访问MRS Manager页面,请参考添加安全组规则。如需对安全组规则进行查看,修改和删除操作,请单击“管理安全组规则”。 自动获取的访问公网IP与用户本机IP不一致,属于正常现象,无需处理。 9022端口为knox的端口,需要开启访问knox的9022端口权限,才能访问MRS Manager服务。 勾选“我确认xx.xx.xx.xx为可信任的公网访问IP,并允许从该IP访问MRS Manager页面。” 图2 绑定弹性公网IP 单击“确定”,进入MRS Manager登录页面。 输入创建集群时默认的用户名“admin”及设置的密码,单击“登录”进入MRS Manager页面。
-
添加安全组规则 如需为其他用户开通访问MRS Manager的权限,参考该小节内容添加对应用户访问公网的IP地址为可信范围。 在MRS管理控制台,在“现有集群” 列表,单击指定的集群名称,进入集群信息页面。 单击弹性公网IP后边的“添加安全组规则”,如图3所示。 图3 集群详情 进入“添加安全组规则”页面,添加需要开放权限用户访问公网的IP地址段并勾选“我确认这里设置的授权对象是可信任的公网访问IP范围,禁止使用0.0.0.0/0,否则会有安全风险。”如图4所示。 图4 添加安全组规则 默认填充的是用户访问公网的IP地址,用户可根据需要修改IP地址段,如需开放多个IP段为可信范围,请重复执行步骤6-步骤9。如需对安全组规则进行查看,修改和删除操作,请单击“管理安全组规则”。 单击“确定”完成安全组规则添加。
-
准备认证机制代码 在开启Kerberos认证的环境下,各个组件之间的相互通信不能够简单的互通,而需要在通信之前进行相互认证,以确保通信的安全性。Kafka应用开发需要进行Kafka、ZooKeeper、Kerberos的安全认证,这些安全认证只需要生成一个jaas文件并设置相关环境变量即可。提供了LoginUtil相关接口来完成这些配置,如下样例代码中只需要配置用户自己申请的账号名称和对应的keytab文件名称即可,由于人机账号的keytab会随用户密码过期而失效,故建议使用机机账号进行配置。 认证样例代码: 设置keytab认证文件模块 /** * 用户自己申请的账号keytab文件名称 */ private static final String USER_KEYTAB_FILE = "用户自己申请的账号keytab文件名称"; /** * 用户自己申请的账号名称 */ private static final String USER_PRINCIPAL = "用户自己申请的账号名称"; MRS服务Kerberos认证模块,如果服务没有开启kerberos认证,这块逻辑不执行 public static void securityPrepare() throws IOException { String filePath = System.getProperty("user.dir") + File.separator + "conf" + File.separator; String krbFile = filePath + "krb5.conf"; String userKeyTableFile = filePath + USER_KEYTAB_FILE; //windows路径下分隔符替换 userKeyTableFile = userKeyTableFile.replace("\\", "\\\\"); krbFile = krbFile.replace("\\", "\\\\"); LoginUtil.setKrb5Config(krbFile); LoginUtil.setZookeeperServerPrincipal("zookeeper/hadoop.hadoop.com"); LoginUtil.setJaasFile(USER_PRINCIPAL, userKeyTableFile); } 如果修改了集群kerberos域名,需要在代码中增加kerberos.domain.name的配置,并按照hadoop.expr=toLowerCase(%{default_realm}%{KerberosServer})规则配置正确的域名信息。例如:修改域名为HUAWEI.COM,则配置为hadoop.huawei.com。
-
样例工程获取地址 华为云MRS服务1.8之前版本的样例工程下载地址为:http://mapreduceservice.obs-website.cn-north-1.myhuaweicloud.com/。 华为云MRS服务1.8.x版本的样例工程下载地址为:https://github.com/huaweicloud/huaweicloud-mrs-example/tree/mrs-1.8。 华为云MRS服务1.9.x版本的样例工程下载地址为:https://github.com/huaweicloud/huaweicloud-mrs-example/tree/mrs-1.9。 华为云MRS服务2.1.x版本的样例工程下载地址为:https://github.com/huaweicloud/huaweicloud-mrs-example/tree/mrs-2.1。 图1 样例代码下载
-
安全认证代码 目前是统一调用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文件在应用程序中进行认证。
-
Presto JDBC使用样例 下面的代码片段在PrestoJDBCExample类中,用于实现JDBC连接Presto TPCDS Catalog。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 private static Connection connection; private static Statement statement; /** * Only when Kerberos authentication enabled, configurations in presto-examples/conf/presto.properties * should be set. More details please refer to https://prestodb.io/docs/0.215/installation/jdbc.html. */ private static void initConnection(String url, boolean krbsEnabled) throws SQLException { if (krbsEnabled) { String filePath = System.getProperty("user.dir") + File.separator + "conf" + File.separator; File proFile = new File(filePath + "presto.properties");if (proFile.exists()) { Properties props = new Properties(); try { props.load(new FileInputStream(proFile)); } catch (IOException e) { e.printStackTrace(); } connection = DriverManager.getConnection(url, props); } } else { connection = DriverManager.getConnection(url, "presto", null); } statement = connection.createStatement(); } private static void releaseConnection() throws SQLException { statement.close(); connection.close(); } public static void main(String[] args) throws SQLException { try { /** * Replace example_ip with your cluster presto server ip. * By default, Kerberos authentication disabled cluster presto service port is 7520, Kerberos * authentication enabled cluster presto service port is 7521 * The postfix /tpcds/sf1 means to use tpcds catalog and sf1 schema, you can use hive catalog as well * If Kerberos authentication enabled, set the second param to true. * see PrestoJDBCExample#initConnection(java.lang.String, boolean). */ initConnection("jdbc:presto://example_ip:7520/tpcds/sf1", false); //initConnection("jdbc:presto://example_ip:7521/tpcds/sf1", true); ResultSet resultSet = statement.executeQuery("select * from call_center"); while (resultSet.next()) { System.out.println(resultSet.getString("cc_name") + " : " + resultSet.getString("cc_employees")); } } catch (SQLException e) { e.printStackTrace(); } finally { releaseConnection(); } }
-
代码样例 如下是代码片段,详细代码请参考com.huawei.bigdata.hdfs.examples中的HdfsMain类。 在Linux客户端运行应用的初始化代码,代码样例如下所示。 /** * 初始化,获取一个FileSystem实例 * * @throws IOException */ private void init() throws IOException { confLoad(); authentication(); instanceBuild(); } /** * * 如果程序运行在Linux上,则需要core-site.xml、hdfs-site.xml的路径, * 修改为在Linux下客户端文件的绝对路径。 * */ private void confLoad() throws IOException { conf = new Configuration(); // conf file conf.addResource(new Path(PATH_TO_HDFS_SITE_XML)); conf.addResource(new Path(PATH_TO_CORE_SITE_XML)); } /** * kerberos security authentication * 如果程序运行在Linux上,则需要krb5.conf和keytab文件的路径, * 修改为在Linux下客户端文件的绝对路径。并且需要将样例代码中的keytab文件和principal文件 * 分别修改为当前用户的keytab文件名和用户名。 * */ private void authentication() throws IOException { // 安全模式 if ("kerberos".equalsIgnoreCase(conf.get("hadoop.security.authentication"))) { System.setProperty("java.security.krb5.conf", PATH_TO_KRB5_CONF); LoginUtil.login(PRNCIPAL_NAME, PATH_TO_KEYTAB, PATH_TO_KRB5_CONF, conf); } } /** * build HDFS instance */ private void instanceBuild() throws IOException { // get filesystem fSystem = FileSystem.get(conf); }
-
配置文件介绍 登录HDFS时会使用到如表1所示的配置文件。这些文件均已导入到“hdfs-example”工程的“conf”目录。 表1 配置文件 文件名称 作用 获取地址 core-site.xml 配置HDFS详细参数。 MRS_Services_ClientConfig\HDFS\config\core-site.xml hdfs-site.xml 配置HDFS详细参数。 MRS_Services_ClientConfig\HDFS\config\hdfs-site.xml user.keytab 对于Kerberos安全认证提供HDFS用户信息。 如果是安全模式集群,您可以联系管理员获取相应账号对应权限的keytab文件和krb5文件。 krb5.conf Kerberos server配置信息。 不同集群的“user.keytab”、“krb5.conf”不能共用。 “conf”目录下的“log4j.properties”文件客户根据自己的需要进行配置。
-
修订记录 发布日期 修改说明 2020-04-20 第16次正式发布: 新增MRS 1.9版本样例代码,详见样例工程获取地址。 新增Alluxio应用开发章节,详见应用开发简介。 2019-11-28 第15次正式发布: 新增Impala应用开发章节,详见应用开发简介。 2019-08-14 第14次正式发布: 新增OpenTSDB应用开发章节,详见应用开发简介。 新增Flink应用开发章节,详见应用开发简介。 2019-04-02 第13次正式发布: 新增如下章节: HBase Phoenix样例代码调测 HBase python样例代码调测 应用开发简介 常用概念 开发流程 开发环境简介 准备环境 准备开发用户 准备JDBC客户端开发环境 准备HCatalog开发环境 典型场景说明 样例代码说明 调测程序 Presto接口 2019-02-01 第12次正式发布: 修改如下章节: 创建表 修改表 使用过滤器Filter 添加二级索引 使用二级索引读取数据 配置HBase文件存储 HFS的JAVA API 2019-01-25 第11次正式发布: 新增如下章节: 编译并运行程序 查看调测结果 JDBC客户端运行及结果查询 2019-01-10 第10次正式发布: 修改如下章节: Phoenix 2018-12-18 第九次正式发布: 修改如下章节: 场景说明 场景说明 场景说明 2018-12-03 第八次正式发布: 修改如下章节: 准备Linux客户端运行环境 2018-10-19 第七次正式发布: 修改如下章节: 使用Scan读取数据 运行SparkStreamingKafka样例工程时报“类不存在”问题 Storm-HDFS开发指引 Storm-OBS开发指引 2018-09-19 第六次正式发布: 新增如下章节: Spark on Yarn的client模式下spark-submit提交任务出现FileNotFoundException异常 2018-06-15 第五次正式发布: 修改如下章节: 通过开源镜像站获取MRS样例工程 2018-06-04 第四次正式发布: 翻译答疑过程中发现问题,优化描述。 2018-05-04 第三次正式发布: 修改帮助中心引入的命令换行问题。 2018-04-08 第二次正式发布。 修改如下章节: 通过开源镜像站获取MRS样例工程 2018-02-02 第一次正式发布。 父主题: 附录
-
操作步骤 运行结果会有如下成功信息: ... 2020-01-09 10:43:49,338 INFO [main] examples.HBaseExample: Entering dropTable. 2020-01-09 10:43:49,341 INFO [main] client.HBaseAdmin: Started disable of hbase_sample_table 2020-01-09 10:43:50,080 INFO [main] client.HBaseAdmin: Operation: DISABLE, Table Name: default:hbase_sample_table, procId: 41 completed 2020-01-09 10:43:50,550 INFO [main] client.HBaseAdmin: Operation: DELETE, Table Name: default:hbase_sample_table, procId: 43 completed 2020-01-09 10:43:50,550 INFO [main] examples.HBaseExample: Drop table successfully. 2020-01-09 10:43:50,550 INFO [main] examples.HBaseExample: Exiting dropTable. 2020-01-09 10:43:50,550 INFO [main] client.ConnectionImplementation: Closing master protocol: MasterService 2020-01-09 10:43:50,556 INFO [main] examples.TestMain: -----------finish to test HBase API------------------- 在Windows环境运行样例代码时会出现下面的异常,但是不影响业务: java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries. 日志说明 日志级别默认为INFO,可以通过调整日志打印级别(DEBUG,INFO,WARN,ERROR,FATAL)来显示更详细的信息。可以通过修改log4j.properties文件来实现,如: hbase.root.logger=INFO,console log4j.logger.org.apache.zookeeper=INFO #log4j.logger.org.apache.hadoop.fs.FSNamesystem=DEBUG log4j.logger.org.apache.hadoop.hbase=INFO # Make these two classes DEBUG-level. Make them DEBUG to see more zk debug. log4j.logger.org.apache.hadoop.hbase.zookeeper.ZKUtil=INFO log4j.logger.org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher=INFO
-
MRS各组件样例工程汇总 样例工程获取地址参见通过开源镜像站获取MRS样例工程,切换分支为与MRS集群相匹配的版本分支,然后下载压缩包到本地后解压,即可获取各组件对应的样例代码工程。 MRS样例代码库提供了各组件的基本功能样例工程供用户使用,当前版本各组件提供的样例工程汇总参见表1。 表1 各组件样例工程汇总(2.x) 组件 样例工程位置 描述 Alluxio alluxio-examples 使用Alluxio通过公共接口连接到存储系统示例程序。可实现写文件、读文件等功能。 Flink flink-examples 该样例工程提供以下样例程序: DataStream程序 Flink构造DataStream的Java/Scala示例程序。本工程示例为基于业务要求分析用户日志数据,读取文本数据后生成相应的DataStream,然后筛选指定条件的数据,并获取结果。 向Kafka生产并消费数据程序 Flink向Kafka生产并消费数据的Java/Scala示例程序。在本工程中,假定某个Flink业务每秒就会收到1个消息记录,启动Producer应用向Kafka发送数据,然后启动Consumer应用从Kafka接收数据,对数据内容进行处理后并打印输出。 异步Checkpoint机制程序 Flink异步Checkpoint机制的Java/Scala示例程序。本工程中,程序使用自定义算子持续产生数据,产生的数据为一个四元组(Long,String,String,Integer)。数据经统计后,将统计结果打印到终端输出。每隔6秒钟触发一次checkpoint,然后将checkpoint的结果保存到HDFS中。 Stream SQL Join程序 Flink SQL Join示例程序。本工程示例调用flink-connector-kafka模块的接口,生产并消费数据。生成Table1和Table2,并使用Flink SQL对Table1和Table2进行联合查询,打印输出结果。 HBase hbase-examples HBase数据读写操作的应用开发示例。 通过调用HBase接口可实现创建用户表、导入用户数据、增加用户信息、查询用户信息及为用户表创建二级索引等功能。 HDFS hdfs-examples HDFS文件操作的Java示例程序。 本工程主要给出了创建HDFS文件夹、写文件、追加文件内容、读文件和删除文件/文件夹等相关接口操作示例。 Hive hive-examples 该样例工程提供以下JDBC/HCatalog样例程序: Hive JDBC处理数据Java示例程序。 本工程使用JDBC接口连接Hive,在Hive中执行相关数据操作。使用JDBC接口实现创建表、加载数据、查询数据等功能。 Hive HCatalog处理数据Java示例程序。 使用HCatalog接口实现通过Hive命令行方式对MRS Hive元数据进行数据定义和查询操作。 Impala impala-examples Impala JDBC处理数据Java示例程序。 本工程使用JDBC接口连接Impala,在Impala中执行相关数据操作。使用JDBC接口实现创建表、加载数据、查询数据等功能。 Kafka kafka-examples Kafka流式数据的处理Java示例程序。 本工程基于Kafka Streams完成单词统计功能,通过读取输入Topic中的消息,统计每条消息中的单词个数,从输出Topic消费数据,然后将统计结果以Key-Value的形式输出。 MapReduce mapreduce-examples MapReduce任务提交Java示例程序。 本工程提供了一个MapReduce统计数据的应用开发示例,实现数据分析、处理,并输出满足用户需要的数据信息。 另外以MapReduce访问HDFS、HBase、Hive为例,介绍如何编写MapReduce作业访问多个服务组件。帮助用户理解认证、配置加载等关键使用方式。 Presto presto-examples 该样例工程提供以下JDBC/HCatalog样例程序: Presto JDBC处理数据Java示例程序。 本工程使用JDBC接口连接Presto,在Presto中执行相关数据操作。使用JDBC接口实现创建表、加载数据、查询数据等功能。 Presto HCatalog处理数据Java示例程序。 OpenTSDB opentsdb-examples 通过调用OpenTSDB接口可实现采集大规模集群中的监控类信息,并可实现数据的秒级查询。该样例程序主要实现写入数据、查询数据、删除数据等功能。 Spark spark-examples SparkHbasetoHbaseJavaExample Spark从HBase读取数据再写入HBase的Java/Scala示例程序。 本示例工程中,Spark应用程序实现两个HBase表数据的分析汇总。 SparkHbasetoHbaseScalaExample SparkHivetoHbaseJavaExample Spark从Hive读取数据再写入到HBase的Java/Scala示例程序。 本示例工程中,Spark应用程序实现分析处理Hive表中的数据,并将结果写入HBase表。 SparkHivetoHbaseScalaExample SparkJavaExample Spark Core任务的Java/Python/Scala示例程序。 本工程应用程序实现从HDFS上读取文本数据并计算分析。 SparkPythonExample SparkScalaExample SparkLauncherJavaExample 使用Spark Launcher提交作业的Java/Scala示例程序。 本工程应用程序通过org.apache.spark.launcher.SparkLauncher类采用Java/Scala命令方式提交Spark应用。 SparkLauncherScalaExample SparkOnHbaseJavaExample Spark on HBase场景的Java/Scala示例程序。 本工程应用程序以数据源的方式去使用HBase,将数据以Avro格式存储在HBase中,并从中读取数据以及对读取的数据进行过滤等操作。 SparkOnHbaseScalaExample SparkSQLJavaExample Spark SQL任务的Java/Scala示例程序。 本工程应用程序实现从HDFS上读取文本数据并计算分析。 SparkSQLScalaExample SparkStreamingJavaExample Spark Streaming从Kafka接收数据并进行统计分析的Java/Scala示例程序。 本工程示例为基于业务要求分析用户日志数据,读取文本数据后生成相应的DataStream,然后筛选指定条件的数据,并获取结果。 SparkStreamingScalaExample SparkStreamingKafka010JavaExample Spark Streaming从Kafka接收数据并进行统计分析的Java/Scala示例程序。 本工程应用程序实时累加计算Kafka中的流数据,统计每个单词的记录总数。 SparkStreamingKafka010ScalaExample SparkStreamingtoHbaseJavaExample Spark Streaming读取Kafka数据并写入HBase的Java/Scala示例程序。 本工程应用程序每5秒启动一次任务,读取Kafka中的数据并更新到指定的HBase表中。 SparkStreamingtoHbaseScalaExample SparkStructuredStreamingJavaExample 在Spark应用中,通过使用StructuredStreaming调用Kafka接口来获取单词记录,然后把单词记录分类统计,得到每个单词记录数。 SparkStructuredStreamingScalaExample SparkThriftServerJavaExample 通过JDBC访问Spark SQL的Java/Scala示例程序。 本示例中,用户自定义JD BCS erver的客户端,使用JDBC连接来进行表的创建、数据加载、查询和删除。 SparkThriftServerScalaExample Storm storm-examples storm-common-examples 构造Storm拓扑和开发Spout/Bolt样例程序。可实现创建Spout、创建Bolt、创建Topology等功能。 storm-hbase-examples MRS的Storm与HBase组件实现交互的示例程序。实现提交Storm拓扑将数据存储到HBase的WordCount表中。 storm-hdfs-examples MRS的Storm与HDFS组件实现交互的示例程序。实现提交Storm拓扑数据存储到HDFS的功能。 storm-jdbc-examples 使用JDBC访问MRS Storm的样例程序。实现使用Storm拓扑向表中插入数据功能。 storm-kafka-examples MRS的Storm与Kafka组件实现交互的示例程序。实现使用Storm拓扑向Kafka中发送数据并查看。 storm-obs-examples MRS的Storm与OBS实现交互的示例程序。实现提交Storm拓扑数据存储到OBS功能。
-
安全认证代码(Java版) 目前样例代码统一调用LoginUtil类进行安全认证。 在Spark样例工程代码中,不同的样例工程,使用的认证代码不同,基本安全认证或带ZooKeeper认证。样例工程中使用的示例认证参数如表2所示,请根据实际情况修改对应参数值。 表2 参数描述 参数 示例参数值 描述 userPrincipal sparkuser 用户用于认证的账号Principal,您可以联系管理员获取此账号。 userKeytabPath /opt/FIclient/user.keytab 用户用于认证的Keytab文件,您可以联系管理员获取文件。 krb5ConfPath /opt/FIclient/KrbClient/kerberos/var/krb5kdc/krb5.conf krb5.conf文件路径和文件名称。 ZKServerPrincipal zookeeper/hadoop.hadoop.com ZooKeeper服务端principal。请联系管理员获取对应账号。 基本安全认证: Spark Core和Spark SQL程序不需要访问HBase或ZooKeeper,所以使用基本的安全认证代码即可。请在程序中添加如下代码,并根据实际情况设置安全认证相关参数: String userPrincipal = "sparkuser"; String userKeytabPath = "/opt/FIclient/user.keytab"; String krb5ConfPath = "/opt/FIclient/KrbClient/kerberos/var/krb5kdc/krb5.conf"; Configuration hadoopConf = new Configuration(); LoginUtil.login(userPrincipal, userKeytabPath, krb5ConfPath, hadoopConf); 带ZooKeeper认证: 由于“Spark Streaming”、“通过JDBC访问Spark SQL”和“Spark on HBase”样例程序,不仅需要基础安全认证,还需要添加ZooKeeper服务端Principal才能完成安全认证。请在程序中添加如下代码,并根据实际情况设置安全认证相关参数: String userPrincipal = "sparkuser"; String userKeytabPath = "/opt/FIclient/user.keytab"; String krb5ConfPath = "/opt/FIclient/KrbClient/kerberos/var/krb5kdc/krb5.conf"; String ZKServerPrincipal = "zookeeper/hadoop.hadoop.com"; String ZOOKEEPER_DEFAULT_ LOG IN_CONTEXT_NAME = "Client"; String ZOOKEEPER_SERVER_PRINCIPAL_KEY = "zookeeper.server.principal"; Configuration hadoopConf = new Configuration(); LoginUtil.setJaasConf(ZOOKEEPER_DEFAULT_LOGIN_CONTEXT_NAME, userPrincipal, userKeytabPath); LoginUtil.setZookeeperServerPrincipal(ZOOKEEPER_SERVER_PRINCIPAL_KEY, ZKServerPrincipal); LoginUtil.login(userPrincipal, userKeytabPath, krb5ConfPath, hadoopConf);
-
安全认证代码(Scala版) 目前样例代码统一调用LoginUtil类进行安全认证。 在Spark样例工程代码中,不同的样例工程,使用的认证代码不同,基本安全认证或带ZooKeeper认证。样例工程中使用的示例认证参数如表3所示,请根据实际情况修改对应参数值。 表3 参数描述 参数 示例参数值 描述 userPrincipal sparkuser 用户用于认证的账号Principal,您可以联系管理员获取此账号。 userKeytabPath /opt/FIclient/user.keytab 用户用于认证的Keytab文件,您可以联系管理员获取文件。 krb5ConfPath /opt/FIclient/KrbClient/kerberos/var/krb5kdc/krb5.conf krb5.conf文件路径和文件名称。 ZKServerPrincipal zookeeper/hadoop.hadoop.com ZooKeeper服务端principal。请联系管理员获取对应账号。 基本安全认证: Spark Core和Spark SQL程序不需要访问HBase或ZooKeeper,所以使用基本的安全认证代码即可。请在程序中添加如下代码,并根据实际情况设置安全认证相关参数: val userPrincipal = "sparkuser" val userKeytabPath = "/opt/FIclient/user.keytab" val krb5ConfPath = "/opt/FIclient/KrbClient/kerberos/var/krb5kdc/krb5.conf" val hadoopConf: Configuration = new Configuration() LoginUtil.login(userPrincipal, userKeytabPath, krb5ConfPath, hadoopConf); 带ZooKeeper认证: 由于“Spark Streaming”、“通过JDBC访问Spark SQL”和“Spark on HBase”样例程序,不仅需要基础安全认证,还需要添加ZooKeeper服务端Principal才能完成安全认证。请在程序中添加如下代码,并根据实际情况设置安全认证相关参数: val userPrincipal = "sparkuser" val userKeytabPath = "/opt/FIclient/user.keytab" val krb5ConfPath = "/opt/FIclient/KrbClient/kerberos/var/krb5kdc/krb5.conf" val ZKServerPrincipal = "zookeeper/hadoop.hadoop.com" val ZOOKEEPER_DEFAULT_LOGIN_CONTEXT_NAME: String = "Client" val ZOOKEEPER_SERVER_PRINCIPAL_KEY: String = "zookeeper.server.principal" val hadoopConf: Configuration = new Configuration(); LoginUtil.setJaasConf(ZOOKEEPER_DEFAULT_LOGIN_CONTEXT_NAME, userPrincipal, userKeytabPath) LoginUtil.setZookeeperServerPrincipal(ZOOKEEPER_SERVER_PRINCIPAL_KEY, ZKServerPrincipal) LoginUtil.login(userPrincipal, userKeytabPath, krb5ConfPath, hadoopConf);
-
样例工程获取地址 MRS服务3.1.2-LTS.3版本的样例工程Git下载地址为:https://github.com/huaweicloud/huaweicloud-mrs-example/tree/mrs-3.1.2。 MRS服务3.2.0-LTS.1版本的样例工程Git下载地址为:https://github.com/huaweicloud/huaweicloud-mrs-example/tree/mrs-3.2.0.1。 MRS服务3.3.0-LTS版本的样例工程Git下载地址为:https://github.com/huaweicloud/huaweicloud-mrs-example/tree/mrs-3.3.0。 图1 样例代码下载 切换分支为与MRS集群相匹配的版本分支,例如“mrs-3.2.0.1”,然后下载压缩包到本地后解压,即可获取各组件对应的样例代码工程。 MRS服务普通版本获取样例工程请参考通过开源镜像站获取样例工程。
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格