Hue中使用Oozie创建Shell工作流在脚本中切换不同用户
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 Fayson的github:https://github.com/fayson/cdhproject
1.文档编写目的
前面Fayson讲过《Hue中使用Oozie创建Ssh工作流时sudo命令执行失败问题分析》,如果不在Shell脚本中使用sudo命令该如何切换到其它呢?本篇文章主要讲述如何Hue中使用Oozie创建Shell工作流在脚本中切换用户执行Hadoop命令。本文脚本中的主要流程如下:
- 内容概述
1.编写测试shell脚本
2.准备测试数据及创建工作流
3.测试工作流
- 测试环境
1.CM和CDH版本为5.13.1
2.采用root用户操作
- 前置条件
1.集群未启用Kerberos
2.准备测试脚本
编写test.sh测试脚本,内容如下:
#!/bin/bash
export HADOOP_USER_NAME=fayson
sqoop import --connect
jdbc:mysql://ip-172-31-6-148.fayson.com/test_db
--username root
--password 123456
--table test_user
--target-dir /fayson/sqoopdata -m 1
hadoop fs -mv /fayson/sqoopdata/part-* /user/hive/warehouse/test_user
export PYTHON_EGG_CACHE=/tmp/.python-eggs/
impala-shell -u impala -i cdh04.fayson.com -q "invalidate metadata"
impala-shell -u fayson -i cdh04.fayson.com -q "select * from test_user"
export HADOOP_USER_NAME=hdfs
hadoop fs -ls /user/hive/warehouse/
3.测试数据准备
1.MySQL的test_user表数据
2.使用hive用户登录Hue创建test_user表并授权给fayson用户
CREATE TABLE test_user(
id int,
name string,
age int
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
stored as TEXTFILE;
授权fayson用户有test_user表的所有权限
4.创建Oozie工作流
1.使用fayson用户登录Hue,创建一个工作流
2.点击保存,进入workspace/lib目录将编写好的test.sh脚本上传至该目录下
3.选择Ssh Action到工作流区域
4.选择上传至该工作流WorkSpace/lib目录下的shell
5.点击 “Add”,点击保存按钮完成工作流创建
5.测试MyFirstWorkflow工作流
1.点击运行按钮
提交工作流
2.点击“Submit”提交工作流,进入运行界面
3.运行成功
6.验证运行结果
1.使用fayson用户登录Hue查询test_user表
2.Shell脚本里面的hadoop fs –ls /user/hive/warehouse正确的将该目录下数据列出
在命令行使用fayson用户是没有权限查看该目录的
由此可以说明exprot HADOOP_USER_NAME成功切换了用户为hdfs
3.Impala-shell执行
为天地立心,为生民立命,为往圣继绝学,为万世开太平。
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
- WiX安装选项--注册程序集到GAC和VS的设计时环境
- 5 款前沿的WordPress主题后台选项开发框架推荐
- es6 class
- WiX安装选项---开始菜单项
- 代码编辑器Sublime Text 3 免费使用方法与简体中文汉化包下载
- TCP/IP 选项TcpTimedWaitDelay设置
- Windows 远程管理WinRM
- Sublime text 3 中Package Control 的安装与使用方法
- 用functools.lru_cache实现Python的Memoization
- 腾讯互联网与社会研究院秘书长司晓:将联合开展研究合作
- 幻灯片jQuery插件Orbit 介绍(附添加到WordPress教程)
- Gravatar开发者手册
- Gravatar开发者手册
- 使用Google CDN服务提供的jQuery库
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Java 使用Runtime在一个Java程序中启动和关闭另一个Java程序
- 解决虚拟机Centos7 报错 curl#56
- Java 桶排序实现 如何判断该放到哪个桶里
- Java selenium使用ChromeDriver截图 解决get超时后续任务报错问题
- 冒泡排序-排序算法
- Java中JDBC工具类封装
- 3.深入k8s:Deployment控制器
- 使用FreeSurfer进行脑区分割
- android 调试 adb
- Java实现基本数据结构(三)——队列
- Java实现基本数据结构(二)——栈
- Java实现基本数据结构(一)——数组
- concurrently 实现前后端连载启动
- Vue+Koa2 前后端分离项目线上部署
- Nativefier— 将网站打包成桌面程序