在k8s中部署hadoop后的使用,包括服务端及客户端(客户端的安装及与k8s服务的对接)

(作者:陈玓玏)

https://blog.csdn.net/weixin_39750084/article/details/136744772?spm=1001.2014.3001.5502https://blog.csdn.net/weixin_39750084/article/details/136750613?spm=1001.2014.3001.5502这两篇文章中,说明了如何通过helm和k8s部署hadoop,接下来就看怎么在部署好的集群中使用hadoop了。

一、在服务端使用hadoop

在k8s集群中使用hadoop和hdfs,不能直接使用hadoop和hdfs命令,需要借助kubectl。

比如查看集群状态,可以通过kubectl exec -it hadoop-hadoop-yarn-nm-0 -- hadoop dfsadmin -report

比如创建文件,可以通过kubectl exec -it hadoop-hadoop-yarn-nm-0 -- hadoop fs -mkdir /t

比如查看文件,可以通过kubectl exec -it hadoop-hadoop-yarn-nm-0 -- hadoop fs -ls /

命令中的hadoop-hadoop-yarn-nm-0是我部署的hadoop集群的master所对应的pod的名称,这个可以在k8sdashboard上查看。

其实在k8s集群上使用hadoop的shell命令,其实就是前面加一串固定的kubectl的命令就可以了。

二、在客户端使用hadoop

如果需要在客户端中使用hadoop和hdfs,需要先安装hadoop客户端。

先查看服务端的jdk和hadoop版本。

clike 复制代码
kubectl exec -it hadoop-hadoop-yarn-nm-0 -- hadoop version

再查看master所在的pod中的环境变量,找到其中java的环境变量,找到java的版本。

clike 复制代码
kubectl exec -it hadoop-hadoop-yarn-nm-0 -- bash -c 'echo $JAVA_HOME'

知道版本之后,我们可以开始安装客户端了。

1. 安装jdk:

clike 复制代码
sudo apt install openjdk-8-jre-headless

如果失败了,先apt-get update试试。

2. 安装hadoop:

下载hadoop,链接是https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz,下二进制版本,下载之后解压,tar -zxvf hadoop-3.3.6.tar.gz

下载速度想要更快可以用这个网址:https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/

解压后,配置环境变量。

打开~/.bashrc文件,把下面两行加到末尾。

clike 复制代码
export HADOOP_HOME=/mnt/admin/hadoop-3.3.6
export PATH=$PATH:$HADOOP_HOME/bin

执行以下命令让环境变量生效:

clike 复制代码
source ~/.bashrc

执行完之后尝试执行hadoop version命令,报错ERROR: JAVA_HOME is not set and could not be found

解决这个问题需要先看一下jdk是否安装好,java -version看一下。

java已经安装好了。

再输export看一下java的环境变量是否设置好了,我这边确实是没设置,那就在环境变量中再设置一下。

clike 复制代码
whereis java
ls -l /usr/bin/java
ls -l /etc/alternatives/java

通过以上三行命令找到java位置,注意两个ls后面的路径都是基于前一条命令的结果,要根据自己的结果来。在~/.bashrc后面把第三条命令的结果设置为JAVA_HOME,注意路径不要写到java那层,写到jre层就可以了。再尝试重新让环境变量生效。

再尝试hadoop version命令就可以了。

3. 配置hadoop

clike 复制代码
/mnt/admin/hadoop-3.3.6/etc/hadoop
vi hadoop-env.sh

确保hadoop-env文件里的JAVA_HOME那行被注释掉。

然后找到core-site.xml文件,添加以下配置:

clike 复制代码
<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://10.43.44.243:9000</value>
        </property>
</configuration>

这里的ip加端口是hadoop集群上namenode的ip及端口。在k8sdashboard上发现nm的service没有ip,所以复制了namenode的service,删除clusterIP为None的设置,生成一个新的service,把新的ip和端口写上。

再找到hdfs-site.xml文件,添加以下配置:

clike 复制代码
<configuration>
        <property>
                <name>dfs.replication</name>
                <value>1</value>
        </property>
</configuration>

配置mapred-site.xml:

clike 复制代码
<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
</configuration>

配置yarn-site.xml:

这里需要resourcemanager的ip地址,k8s集群上的没有,所以也需要再复制一个rm,把clusterIP删了,再把type改为NodePort,把ip填到xml中。

clike 复制代码
<configuration>

<!-- Site specific YARN configuration properties -->
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>10.43.4.198</value>
        </property>
</configuration>

4. 测试使用hadoop及hdfs

配置完之后,回到hadoop-3.3.6的上层目录,就可以在客户端直接通过hadoop命令及hdfs命令操作集群啦。

尝试先查询文件,再新建,再查询。

成功了,这样比在服务端直接使用更方便,不用通过kubectl来执行命令啦。

参考链接:
https://www.cnblogs.com/zhangyinhua/p/7678704.html#_label0
https://blog.51cto.com/u_16175434/7148403

相关推荐
生活爱好者!4 小时前
哇!影视新玩法!docker部署NEOWATCH NAS
运维·docker·容器
cpolar技术支持7 小时前
Docker 容器启动失败怎么查?端口、日志、权限与网络排障完整教程
linux·docker·容器·cpolar·网络排障
Lsetea8 小时前
Kubernetes 1.37 Pod证书怎么签发:Signer与mTLS信任链排查
云原生·kubernetes·ssl证书·tls·mtls
新时代牛马10 小时前
docker run 起不来?从dockerd、containerd 到runc 一条线讲透
运维·docker·容器
努力努力再努力wz11 小时前
【Docker 入门系列】:从 Namespace、CGroup 到 LXC:理解容器运行时、rootfs 与 LXC 实战
运维·docker·容器
JavaPub-rodert12 小时前
Docker 多阶段构建:为什么生产环境镜像可以小 90%
运维·docker·容器
PC2005-cloud14 小时前
Qdrant 连接失败排查:localhost 解析到 __1,而 Docker 只绑了 IPv4
运维·docker·容器
计算机编程-吉哥16 小时前
基于机器学习的城市交通拥堵分析与预测平台【计算机毕业设计选题·机器学习·随机森林算法】
hadoop·算法·随机森林·机器学习·课程设计·计算机毕业设计选题·大数据毕业设计选题推荐
Meta3917 小时前
cenots8安装docker
docker·容器·centos
计算机源码社18 小时前
基于Hadoop+Spark的黄金市场历史数据特征分析与可视化大屏 基于K-Means聚类算法的黄金历史价格阶段划分研究
大数据·hadoop·python·数据挖掘·数据分析·spark·毕业设计