Hadoop 3.1.3 环境配置与 18 个 Linux 基础命令实战解析
Hadoop 3.1.3 环境配置与 18 个 Linux 基础命令实战解析对于大数据初学者而言搭建稳定的Hadoop运行环境并掌握基础Linux命令是开启分布式计算之旅的第一步。本文将手把手带你完成Ubuntu系统下的Hadoop 3.1.3伪分布式环境部署并通过18个核心Linux命令的实战演示揭示这些命令在Hadoop生态中的具体应用场景。不同于简单的命令罗列我们将重点分析命令组合技巧、常见错误排查方法并提供可直接复用的配置脚本片段。1. 环境准备与系统配置在开始Hadoop安装前需要确保操作系统满足基础运行条件。推荐使用Ubuntu 18.04 LTS版本该版本对Hadoop 3.x系列有更好的兼容性。以下是通过终端完成的系统级准备工作# 更新软件源索引 sudo apt-get update # 安装必备工具包 sudo apt-get install -y ssh pdsh openjdk-8-jdk vim注意Hadoop 3.1.3需要Java 8运行环境更高版本的JDK可能导致兼容性问题。可通过java -version验证安装结果应显示类似1.8.0_301的版本号。配置SSH免密登录是Hadoop集群管理的基础要求执行以下命令生成密钥并授权ssh-keygen -t rsa -P -f ~/.ssh/id_rsa cat ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys chmod 0600 ~/.ssh/authorized_keys测试本地SSH连接是否正常ssh localhost2. Hadoop 3.1.3 伪分布式安装从Apache官网下载二进制包后进行如下关键配置步骤wget https://archive.apache.org/dist/hadoop/common/hadoop-3.1.3/hadoop-3.1.3.tar.gz tar -xzvf hadoop-3.1.3.tar.gz -C /opt/ sudo mv /opt/hadoop-3.1.3 /opt/hadoop编辑/opt/hadoop/etc/hadoop/hadoop-env.sh设置JAVA_HOMEexport JAVA_HOME$(dirname $(dirname $(readlink -f $(which java))))核心配置文件需要修改以下三个XML文件core-site.xml配置示例configuration property namefs.defaultFS/name valuehdfs://localhost:9000/value /property property namehadoop.tmp.dir/name value/opt/hadoop/tmp/value /property /configurationhdfs-site.xml配置示例configuration property namedfs.replication/name value1/value /property property namedfs.namenode.name.dir/name value/opt/hadoop/namenode/value /property /configuration格式化HDFS并启动服务hdfs namenode -format /opt/hadoop/sbin/start-dfs.sh验证服务是否正常启动jps应显示包含NameNode、DataNode和SecondaryNameNode的进程列表。3. Linux命令在Hadoop中的实战应用以下18个核心命令按照Hadoop工作流中的实际使用场景进行分类演示3.1 文件系统操作组hdfs dfs -ls查看HDFS根目录内容hdfs dfs -ls /hdfs dfs -mkdir创建用户目录Hadoop环境必备hdfs dfs -mkdir -p /user/$USERhdfs dfs -put上传本地文件到HDFSecho test content test.txt hdfs dfs -put test.txt /user/$USER/hdfs dfs -cat查看HDFS文件内容hdfs dfs -cat /user/$USER/test.txt3.2 权限管理组hdfs dfs -chmod修改文件权限Hadoop权限模型与Linux一致hdfs dfs -chmod 644 /user/$USER/test.txthdfs dfs -chown变更文件所有者hdfs dfs -chown hduser:hadoop /user/$USER/test.txt3.3 数据操作组hdfs dfs -getmerge合并多个HDFS文件到本地hdfs dfs -getmerge /user/$USER/input/* merged_local.txthdfs dfs -cpHDFS内部文件复制hdfs dfs -cp /user/$USER/test.txt /user/$USER/test_copy.txt3.4 系统管理组hdfs dfsadmin -report查看集群存储空间使用情况hdfs dfsadmin -reporthadoop classpath获取完整类路径开发时常用hadoop classpath4. 常见问题排查指南当遇到Hadoop启动失败时可按以下步骤排查检查日志文件关键日志位置tail -n 100 /opt/hadoop/logs/hadoop-*-namenode-*.log端口冲突检测Hadoop默认使用9000和50070端口netstat -tulnp | grep -E 9000|50070权限问题处理临时目录权限设置sudo chown -R $USER:$USER /opt/hadoop/tmp配置文件验证检查XML格式是否正确xmllint --noout /opt/hadoop/etc/hadoop/core-site.xml对于初学者来说最容易忽略的是环境变量配置。建议将以下内容添加到~/.bashrc文件末尾export HADOOP_HOME/opt/hadoop export PATH$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin export HADOOP_CLASSPATH$(hadoop classpath)5. 高效操作技巧批量操作脚本示例以下脚本自动完成目录创建、文件上传和权限设置#!/bin/bash INPUT_DIR/data/input hdfs dfs -mkdir -p /user/$USER/input find $INPUT_DIR -type f | while read file; do hdfs dfs -put $file /user/$USER/input/ hdfs dfs -chmod 644 /user/$USER/input/$(basename $file) done命令组合技巧统计HDFS中特定用户的文件数量hdfs dfs -ls -R /user | grep ^- | awk {print $3} | grep $USER | wc -lHDFS与本地文件系统交互使用管道实现数据转换hdfs dfs -cat /user/$USER/data.csv | awk -F, {print $1} | hdfs dfs -put - /user/$USER/processed_data.txt