如何在Google Cloud Shell中正常使用Hadoop命令?
在Cloud Shell中使用Hadoop命令操作Dataproc集群的解决方案
我来帮你解决这个问题!Cloud Shell默认确实没有预装Hadoop CLI工具,不过有几种方法能让你在Cloud Shell里顺利操作Dataproc集群的Hadoop服务,下面给你详细说明:
方法一:在Cloud Shell中安装并配置Hadoop CLI工具
这种方法适合需要频繁使用Hadoop命令的场景,步骤如下:
确认Dataproc集群的Hadoop版本
先获取你创建的Dataproc集群对应的Hadoop版本,避免版本不兼容:gcloud dataproc clusters describe YOUR_CLUSTER_NAME --region YOUR_REGION | grep HadoopVersion替换
YOUR_CLUSTER_NAME和YOUR_REGION为你的集群名称和所在区域(比如us-central1)。下载对应版本的Hadoop二进制包
到Apache Hadoop归档站下载匹配版本的压缩包,比如如果版本是3.2.3,执行:wget https://archive.apache.org/dist/hadoop/common/hadoop-3.2.3/hadoop-3.2.3.tar.gz解压并设置环境变量
- 解压下载的包:
tar -xzf hadoop-3.2.3.tar.gz - 临时配置环境变量(重启Cloud Shell后会失效):
export HADOOP_HOME=$PWD/hadoop-3.2.3 export PATH=$HADOOP_HOME/bin:$PATH - 如果想永久生效,把上述两行添加到
~/.bashrc文件末尾,然后执行:source ~/.bashrc
- 解压下载的包:
配置Hadoop连接到Dataproc集群
需要修改Hadoop的配置文件,让它指向Dataproc集群的NameNode:- 先获取集群的NameNode地址:
gcloud dataproc clusters describe YOUR_CLUSTER_NAME --region YOUR_REGION --format="value(configuration.hadoopConfig.fs.defaultFS)" - 编辑Hadoop的
core-site.xml文件:nano $HADOOP_HOME/etc/hadoop/core-site.xml - 在
<configuration>标签内添加以下配置(替换成你获取到的NameNode地址):<property> <name>fs.defaultFS</name> <value>hdfs://YOUR_CLUSTER_MASTER_HOSTNAME:8020</value> </property> - 保存退出(按
Ctrl+O,回车,再按Ctrl+X)。
- 先获取集群的NameNode地址:
测试命令
现在执行Hadoop命令试试,比如:hadoop fs -ls /应该能正常返回集群HDFS根目录的内容了。
方法二:无需安装CLI,直接通过gcloud或SSH操作
如果只是偶尔执行Hadoop命令,这种方法更简便:
方式1:用gcloud提交Hadoop任务
直接通过gcloud dataproc jobs submit命令执行Hadoop操作,比如:
gcloud dataproc jobs submit hadoop --region YOUR_REGION --cluster YOUR_CLUSTER_NAME --command "fs -ls /"
这个命令会把Hadoop命令提交到集群执行,并返回结果。
方式2:SSH到Dataproc主节点执行命令
Dataproc主节点默认预装了所有Hadoop工具,你可以直接SSH进去操作:
gcloud compute ssh YOUR_CLUSTER_NAME-m --region YOUR_REGION
登录成功后,就能直接使用hadoop fs -ls等命令了,操作完输入exit即可回到Cloud Shell。
内容的提问来源于stack exchange,提问作者Cezary Pokropek




