hadoop如何使用:本地单机调试后再部署集群运行任务
真正上手搞懂hadoop如何使用,是我当初踩了一堆细碎操作漏洞后摸透的,新手别急着搭集群,单机伪分布式跑通所有基础流程,才是最稳妥的入门方式。
最开始操作的时候,直接跳过了单机测试环节,硬着头皮搭建三节点集群,配置文件全部照搬网上的模板,主机名、IP地址、防火墙规则随便填,启动集群后一直报错,NameNode反复宕机,日志刷满端口冲突提示,折腾整整一天都没跑通一次简单的WordCount任务。后来才反应过来,根本不是集群配置复杂的问题,是完全没摸懂Hadoop基础运行逻辑,连基础的文件上传、任务提交流程都不熟悉,盲目上集群只会错得更多。
先清空了所有集群配置,重新搭建单机伪分布式环境。第一步只做基础环境配置,卸载系统自带的OpenJDK,手动配置JDK8环境变量,关闭开机自启的防火墙和SELinux,这一步很多人会忽略,端口拦截是Hadoop启动失败的高频原因,而且很难排查。配置完成后,解压Hadoop安装包,在etc/hadoop目录下,逐一修改core-site.xml、hdfs-site.xml、mapred-site.xml三个核心配置文件,只保留单机运行的必要参数,删掉所有多余的集群配置参数。
配置文件改完后,执行hdfs namenode -format格式化文件系统,第一次操作的时候,手快重复执行了两次格式化指令,直接导致集群UUID混乱,后续启动所有节点都无法识别文件系统。当时盯着黑屏上的报错信息愣了很久,反复查阅日志,最后只能删除tmp临时文件和hdfs数据文件夹,重新格式化才恢复正常。从这之后就记住,格式化操作全程只能执行一次,重复操作百分百损坏文件系统数据。
启动单机环境后,开始实操基础使用流程,这是Hadoop最核心的日常使用步骤。先通过hdfs dfs -mkdir指令创建HDFS分布式文件系统目录,再用put指令把本地的测试文本文件上传到分布式目录中,替代本地文件存储。接着运行Hadoop自带的WordCount单词统计案例,通过hadoop jar指令提交运行任务,等待Map、Reduce阶段依次执行完成后,用cat指令查看输出结果。
整个单机流程跑通后,才开始搭建多节点集群。搭建过程中只需要把单机的有效配置同步到所有从节点,统一主机名映射,配置免密登录,保证所有节点的JDK、Hadoop版本和配置文件完全一致。启动集群后,重复单机的文件上传、任务提交操作,所有流程完全通用,没有出现任何报错。
很多新手用Hadoop的误区,就是把使用重点放在搭建集群上,其实集群只是运行载体,Hadoop的核心使用操作,全部集中在HDFS文件操作和MapReduce任务提交这两类指令上。日常使用中,九成的操作都是文件上传、下载、目录创建、任务提交、日志查看,集群搭建只是一次性操作。
现在每次使用Hadoop处理数据,都会先在单机环境测试脚本和任务逻辑,确认指令无误、任务运行正常后,再同步到集群批量执行。
我刚刚在终端输入jps,核对所有进程运行状态,确认无异常后,准备上传一批新的测试数据集验证集群稳定性。