如何使用Ubuntu Hadoop进行数据分析
导读:在 Ubuntu 上使用 Hadoop 进行数据分析的实操指南 一 环境准备与安装 安装 Java(Hadoop 3.x 建议使用 JDK 8 或 JDK 11): 安装 OpenJDK 11:sudo apt update &...
在 Ubuntu 上使用 Hadoop 进行数据分析的实操指南
一 环境准备与安装
- 安装 Java(Hadoop 3.x 建议使用 JDK 8 或 JDK 11):
- 安装 OpenJDK 11:sudo apt update & & sudo apt install -y openjdk-11-jdk
- 验证:java -version、javac -version
- 创建专用用户与 SSH 免密:
- sudo useradd -m hadoop -s /bin/bash & & sudo passwd hadoop & & sudo adduser hadoop sudo
- su - hadoop
- sudo apt-get install -y openssh-server
- ssh-keygen -t rsa -P ‘’ -f ~/.ssh/id_rsa & & cat ~/.ssh/id_rsa.pub > > ~/.ssh/authorized_keys & & chmod 600 ~/.ssh/authorized_keys
- ssh localhost 测试免密登录
- 下载并解压 Hadoop(示例版本 3.3.5):
- wget https://downloads.apache.org/hadoop/common/hadoop-3.3.5/hadoop-3.3.5.tar.gz
- sudo tar -xzf hadoop-3.3.5.tar.gz -C /usr/local & & sudo mv /usr/local/hadoop-3.3.5 /usr/local/hadoop & & sudo chown -R hadoop:hadoop /usr/local/hadoop
- 配置环境变量(~/.bashrc 或 /etc/profile):
- export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
- export HADOOP_HOME=/usr/local/hadoop
- export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
- source ~/.bashrc
- 验证安装:/usr/local/hadoop/bin/hadoop version
二 伪分布式配置与启动
- 配置目录:$HADOOP_HOME/etc/hadoop
- core-site.xml
- hadoop.tmp.dirfile:/usr/local/hadoop/tmp fs.defaultFShdfs://localhost:9000
- hdfs-site.xml
- dfs.replication1 dfs.namenode.name.dirfile:/usr/local/hadoop/tmp/dfs/name dfs.datanode.data.dirfile:/usr/local/hadoop/tmp/dfs/data
- mapred-site.xml(如不存在先 cp mapred-site.xml.template)
- mapreduce.framework.nameyarn
- yarn-site.xml
- yarn.resourcemanager.hostnamelocalhost yarn.nodemanager.aux-servicesmapreduce_shuffle yarn.nodemanager.env-whitelistJAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME
- 格式化 NameNode(首次执行):/usr/local/hadoop/bin/hdfs namenode -format
- 启动与验证:
- 启动:/usr/local/hadoop/sbin/start-dfs.sh & & /usr/local/hadoop/sbin/start-yarn.sh
- 进程检查:jps(应见 NameNode、DataNode、SecondaryNameNode、ResourceManager、NodeManager)
- Web 界面:NameNode http://localhost:9870,YARN http://localhost:8088
- HDFS 基础操作:
- hdfs dfs -mkdir -p /user/hadoop/input
- hdfs dfs -put $HADOOP_HOME/etc/hadoop/*.xml /user/hadoop/input
- hdfs dfs -ls /user/hadoop/input
三 数据分析实战 WordCount
- 方式 A 使用 Hadoop 自带示例
- 运行:/usr/local/hadoop/bin/hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.5.jar wordcount /user/hadoop/input /user/hadoop/output
- 查看结果:hdfs dfs -cat /user/hadoop/output/*
- 方式 B 自定义 Java 程序
- 核心代码骨架(TokenizerMapper / IntSumReducer / main 设置输入输出与 Job 参数)
- 编译打包为 WordCount.jar
- 运行:/usr/local/hadoop/bin/hadoop jar WordCount.jar WordCount /user/hadoop/input /user/hadoop/output2
- 查看:hdfs dfs -cat /user/hadoop/output2/*
- 注意:输出目录不能已存在,否则会报错
四 进阶 使用 Hive 做 SQL 数据分析
- 安装与初始化(示例路径,可按需调整)
- 下载解压 Hive,配置 HIVE_HOME 与 PATH
- 初始化元数据库(Derby 或 MySQL),启动 HiveServer2 与 Beeline
- 典型流程
- 建表(外部表指向 HDFS 数据):
- CREATE EXTERNAL TABLE logs (ts BIGINT, user STRING, action STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘\t’ LOCATION ‘/user/hadoop/logs’;
- 数据清洗与聚合:
- CREATE TABLE user_action_cnt AS SELECT user, action, COUNT(*) AS cnt FROM logs WHERE action IS NOT NULL GROUP BY user, action;
- 导出结果到 HDFS 或外部系统,用于报表或可视化
- 建表(外部表指向 HDFS 数据):
- 适用场景:批处理、离线统计、维度建模与即席查询
五 常见问题与优化建议
- 权限与路径
- 确保 HDFS 目录归属正确(如 hadoop:hadoop),避免权限拒绝
- 输出目录需不存在,避免作业提交失败
- 资源与性能
- 合理设置 YARN 内存(yarn.nodemanager.resource.memory-mb、mapreduce.map.memory.mb、mapreduce.reduce.memory.mb)
- 小文件多时合并(CombineFileInputFormat)或使用 SequenceFile/ORC/Parquet 提升 I/O
- 监控与排错
- 使用 jps 检查进程、NameNode/ResourceManager Web UI 定位瓶颈
- 查看 YARN 日志:yarn logs -applicationId < app_id>
- 扩展生态
- 交互式查询可用 Spark SQL / Impala,实时处理可引入 Spark Streaming / Storm,可视化可用 Superset / Zeppelin / FineBI 连接 Hive/Spark
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何使用Ubuntu Hadoop进行数据分析
本文地址: https://pptw.com/jishu/780315.html
