如何在Hue中创建Ssh的Oozie工作流
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
1.文档编写目的
前面Fayson讲过《如何使用Hue创建Spark1和Spark2的Oozie工作流》和《如何使用Hue创建Spark2的Oozie工作流(补充)》,在创建Oozie工作流时会遇到需要登录到其它服务器上去执行脚本或命令,这个时候就会用到Oozie的Ssh Action。本文主要介绍如何创建Ssh Action的Oozie工作流。
- 内容概述
1.生成oozie用户公钥
2.添加公钥到目标用户
3.测试Ssh Action工作流
4.总结
- 测试环境
1.CM和CDH版本为5.13.0
2.操作系统:CentOS6.5
3.采用root用户操作
4.集群未启用Kerberos
2.生成Oozie用户公钥
1.登录Oozie Server所在服务器(ip-172-31-6-148),生成oozie用户的公钥,执行命令一直回车到结束
[root@ip-172-31-6-148 ~]# sudo -u oozie ssh-keygen -t rsa
注意:oozie用户的公钥文件在/var/lib/oozie/.ssh目录下,下图标注的为公钥文件
3.添加Oozie公钥到目标主机用户
这里我们使用ip-172-31-5-190的fayson用户来做测试
1.将oozie用户生成的公钥,拷贝至目标服务器相应用户根目录的.ssh文件夹下
[root@ip-172-31-6-148 /]# scp /var/lib/oozie/.ssh/id_rsa.pub ip-172-31-5-190:/home/fayson/.ssh
id_rsa.pub 100% 414 0.4KB/s 00:00
[root@ip-172-31-6-148 /]#
注意:如果目标服务器相应用户的.ssh目录不存在则手动创建或在该用户下使用ssh-keygen –t rsa 命令生成
[root@ip-172-31-5-190 fayson]# su fayson
[fayson@ip-172-31-5-190 ~]$ cd /home/fayson
[fayson@ip-172-31-5-190 ~]$ mkdir .ssh
[fayson@ip-172-31-5-190 ~]$ chmod 700 .ssh/
2.登录ip-172-31-5-190服务器,将拷贝的公钥文件写入authorized_keys文件
[fayson@ip-172-31-5-190 ~]$ cd /home/fayson/.ssh/
[fayson@ip-172-31-5-190 .ssh]$ cat id_rsa.pub >> authorized_keys
[fayson@ip-172-31-5-190 .ssh]$ chmod 600 authorized_keys
[fayson@ip-172-31-5-190 .ssh]$ chown fayson:fayson authorized_keys
注意:authorized_keys文件的权限必须为600,文件属主必须为fayson用户
3.在ip-172-31-6-148使用oozie用户执行登录操作
[root@ip-172-31-6-148 /]# sudo -u oozie ssh fayson@ip-172-31-5-190
Last login: Thu Nov 2 00:56:56 2017 from 172.31.6.148
[fayson@ip-172-31-5-190 ~]$
显示已成功用fayson用户登录到ip-172-31-5-190服务器。
4.创建Oozie的Ssh Action测试
1.登录Hue创建Oozie工作流
输入ssh登录信息及执行的指令或脚本
保存新建的Oozie工作流。
2.执行任务测试是否正常
任务执行成功。
5.总结
在非Kerberos环境的集群中,ssh actions会以oozie用户执行,因为oozie的服务进程是以oozie的用户起的。所以在执行ssh命令并指定用户登录到目标服务器需要将oozie服务器的公钥文件拷贝至目标服务器的指定的用户下,从而实现从oozie用户ssh到指定用户的免密码登录。
在CDH集群中oozie用户默认是不能登录的,如果需要通过su切换到oozie用户,则需要使用root用户在/etc/pam.d/su文件中增加如下配置:
auth [success=ignore default=1] pam_succeed_if.so user = oozie
auth sufficient pam_succeed_if.so use_uid user = oozie
在命令行执行如下命令就可以切换至oozie用户
[root@ip-172-31-6-148 /]# sudo -u oozie -s
为天地立心,为生民立命,为往圣继绝学,为万世开太平。 温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。
原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操
- python程序员开发必备的5大工具,你用过几个?
- Andrew Ng机器学习课程笔记--week8(K-means&PCA)
- Andrew Ng机器学习课程笔记--week7(SVM)
- Pytorch windows10安装教程
- Udacity并行计算课程笔记-The GPU Programming Model
- DeepLearning.ai学习笔记(二)改善深层神经网络:超参数调试、正则化以及优化--Week2优化算法
- DeepLearning.ai学习笔记(二)改善深层神经网络:超参数调试、正则化以及优化--Week1深度学习的实用层面
- 通俗理解决策树中的熵&条件熵&信息增益
- KNN实现手写数字识别
- softmax分类算法原理(用python实现)
- DeepLearning.ai学习笔记(一)神经网络和深度学习--Week4深层神经网络
- 博客园自定义皮肤扁平化设计
- DeepLearning.ai学习笔记(四)卷积神经网络 -- week3 目标检测
- DeepLearning.ai学习笔记(四)卷积神经网络 -- week2深度卷积神经网络 实例探究
- 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 数组属性和方法