Hadoop集群安装与配置指南(CentOS 7)

news2025/2/18 21:25:30

Hadoop集群安装与配置指南(CentOS 7)


一、虚拟机准备
  1. 安装虚拟机软件

    • 下载VMware或VirtualBox,完成安装并激活。

    • 注意:选择NAT模式,配置子网IP(如192.168.10.0)。

  2. CentOS 7安装

    • 下载CentOS 7镜像,安装时选择最小化安装(Minimal Install)。

    • 配置语言、时区(建议上海),分配磁盘空间(建议20GB+)。


二、网络配置
  1. 虚拟机网络设置

    • 打开 虚拟网络编辑器 → 选择NAT模式 → 修改子网IP为 192.168.10.0

    • 设置网关为 192.168.10.2

  2. 物理机DNS配置

    • 打开物理机的网络适配器 → IPv4属性 → 设置DNS为 192.168.10.2

  3. 虚拟机静态IP配置

    vim /etc/sysconfig/network-scripts/ifcfg-ens33
    
    • 修改以下内容:
      BOOTPROTO=static
      ONBOOT=yes
      IPADDR=192.168.10.100  # 主节点IP
      GATEWAY=192.168.10.2
      DNS1=192.168.10.2
      
    • 重启网络:systemctl restart network

  4. 主机名与Hosts映射

    vim /etc/hostname  # 修改为 hadoop100
    vim /etc/hosts     # 添加所有节点IP映射
    
    • 内容示例:
      192.168.10.100 hadoop100
      192.168.10.101 hadoop101
      ...(其他节点)
      
    • 生效配置:reboot 或 hostnamectl set-hostname hadoop100


三、工具连接与克隆
  1. Xshell/Xftp配置

    • 物理机修改 C:\Windows\System32\drivers\etc\hosts,添加节点映射。

  2. 克隆虚拟机

    • 克隆后需修改每台主机的 hostname 和 IPADDR(如hadoop101→192.168.10.101)。


四、环境准备
  1. 关闭防火墙

    systemctl stop firewalld
    systemctl disable firewalld
    
  2. 创建用户并授权

    useradd xiaohong
    passwd xiaohong
    visudo  # 添加 xiaohong ALL=(ALL) NOPASSWD:ALL
    
  3. 卸载旧JDK

    rpm -qa | grep java | xargs -n1 rpm -e --nodeps
    
  4. 安装JDK & Hadoop

    • 创建目录:
      sudo mkdir /opt/{software,module}
      sudo chown -R xiaohong /opt/*
      
    • 解压JDK和Hadoop到 /opt/module
      tar -zxvf jdk-8u381-linux-x64.tar.gz -C /opt/module/
      tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/
      
  5. 环境变量配置

    sudo vim /etc/profile.d/my_env.sh
    
    • 添加内容:
      export JAVA_HOME=/opt/module/jdk1.8.0_381
      export HADOOP_HOME=/opt/module/hadoop-3.1.3
      export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
      
    • 生效配置:source /etc/profile


五、集群配置
  1. 配置文件修改

    • core-site.xml(NameNode地址):
      <property>
          <name>fs.defaultFS</name>
          <value>hdfs://hadoop101:8020</value>
      </property>
      
    • hdfs-site.xml(SecondaryNameNode地址):
      <property>
          <name>dfs.namenode.secondary.http-address</name>
          <value>hadoop103:9868</value>
      </property>
      
    • yarn-site.xml(ResourceManager地址):
      <property>
          <name>yarn.resourcemanager.hostname</name>
          <value>hadoop102</value>
      </property>
      
    • mapred-site.xml(MapReduce运行模式):
      <property>
          <name>mapreduce.framework.name</name>
          <value>yarn</value>
      </property>
      
  2. 分发配置到集群

    • 使用 xsync 脚本同步配置:
      xsync /opt/module/hadoop-3.1.3/etc/hadoop/
      
  3. SSH免密登录

    • 生成密钥并分发:
      ssh-keygen -t rsa
      ssh-copy-id hadoop101  # 所有节点执行
      

六、集群启动与测试
  1. 首次启动

    • 格式化HDFS(仅在hadoop101执行一次):
      hdfs namenode -format
      
    • 启动HDFS和YARN:
      start-dfs.sh    # 在hadoop101执行
      start-yarn.sh   # 在hadoop102执行
      
  2. 验证服务

    • 检查进程:jps
      • hadoop101: NameNode, DataNode

      • hadoop102: ResourceManager, NodeManager

      • hadoop103: SecondaryNameNode, DataNode

    • Web访问:
      • HDFS: http://hadoop101:9870

      • YARN: http://hadoop102:8088

  3. 测试WordCount

    hadoop fs -mkdir /input
    hadoop fs -put $HADOOP_HOME/README.txt /input
    hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output
    

七、集群管理脚本
  1. 集群启停脚本 (myhadoop.sh)

    #!/bin/bash
    case $1 in
    "start")
        ssh hadoop101 "start-dfs.sh"
        ssh hadoop102 "start-yarn.sh"
        ;;
    "stop")
        ssh hadoop101 "stop-dfs.sh"
        ssh hadoop102 "stop-yarn.sh"
        ;;
    esac
    
  2. 进程查看脚本 (jpsall)

    #!/bin/bash
    for host in hadoop{101..103}; do
        echo "======== $host ========"
        ssh $host jps
    done
    

八、常见问题
  1. 权限问题

    • 确保目录所有权:sudo chown -R xiaohong /opt/module

    • 在 hadoop-env.sh 中设置用户:
      export HDFS_NAMENODE_USER=xiaohong
      export HDFS_DATANODE_USER=xiaohong
      
  2. 端口冲突

    • Hadoop 3.x 的NameNode Web端口为 9870(非50070)。

  3. 历史服务器无法访问

    • 启动服务:mapred --daemon start historyserver


通过遵循上述步骤,您将能够成功部署一个完全分布式的Hadoop 3.1.3集群。建议在操作前备份关键配置文件,并逐步验证每项服务是否正常启动。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2299094.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Streamlit与Qlib:量化投资策略可视化实战

Streamlit与Qlib&#xff1a;量化投资策略可视化实战 1. 项目背景 在量化投资领域&#xff0c;数据可视化是理解和展示投资策略的关键。本文将详细介绍如何使用Streamlit和Qlib构建一个交互式的量化投资策略可视化应用。 2. 环境准备 2.1 安装依赖 # 安装必要的库 pip ins…

Ceph集群搭建2025(squid版)

squid版本维护年限 apt install -y cephadmecho >> "deb http://mirrors.163.com/ceph/debian-squid/ bookworm main" echo >> "deb-src http://mirrors.163.com/ceph/debian-squid/ bookworm main"#安装源 cephadm install #开始初始化一个最…

机器学习实战(3):线性回归——预测连续变量

第3集&#xff1a;线性回归——预测连续变量 在机器学习的世界中&#xff0c;线性回归是最基础、最直观的算法之一。它用于解决回归问题&#xff0c;即预测连续变量&#xff08;如房价、销售额等&#xff09;。尽管简单&#xff0c;但线性回归却是许多复杂模型的基石。今天我们…

【漫话机器学习系列】093.代价函数和损失函数(Cost and Loss Functions)

代价函数和损失函数&#xff08;Cost and Loss Functions&#xff09;详解 1. 引言 在机器学习和深度学习领域&#xff0c;代价函数&#xff08;Cost Function&#xff09;和损失函数&#xff08;Loss Function&#xff09;是核心概念&#xff0c;它们决定了模型的优化方向。…

LabVIEW 天然气水合物电声联合探测

天然气水合物被认为是潜在的清洁能源&#xff0c;其储量丰富&#xff0c;预计将在未来能源格局中扮演重要角色。由于其独特的物理化学特性&#xff0c;天然气水合物的探测面临诸多挑战&#xff0c;涉及温度、压力、电学信号、声学信号等多个参数。传统的人工操作方式不仅效率低…

【记忆化搜索】最长递增子序列

文章目录 300. 最长递增子序列解题思路&#xff1a;递归 -> 记忆化搜索 300. 最长递增子序列 300. 最长递增子序列 ​ 给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长度。 ​ 子序列 是由数组派生而来的序列&#xff0c;删除&#xff08;或不删除&am…

Tomcat的升级

一、为什么Tomcat需要升级 在生产环境中&#xff0c;我们都会指定对应的Tomcat版本进行安排配置&#xff0c;但是由于Tomcat厂商对于小版本的更新迭代会将一些Bug修复&#xff0c;这个时候在生产中出现问题/预防出现问题&#xff0c;可以通过小版本的升级解决前提&#xff1a;…

4-制作UI

创建模块文件夹 Unity编辑器->Tools->YIUI自动化工具&#xff0c;在新增模块名称那里输入模块名字并点击创建。便可看到在GameRes/YIUI文件夹下有新建的文件夹与内容了。里面包含图集、预制体、Sprites。如果进行预制体的修改&#xff0c;则需要双击进入再修改&#xff0…

vue3+element-plus中的el-table表头和el-table-column内容全部一行显示完整(hook函数)

hook函数封装 export const useTableColumnWidth _this > {const { refTable } _thisconst columnWidthObj ref()const getTableColumnWidth cb > {nextTick(() > {columnWidthObj.value {}// 获取行rowsconst tableEle refTable?.refBaseTable?.$elif (!tab…

DeepSeek 助力 Vue 开发:打造丝滑的开关切换(Switch)

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…

使用Python爬虫实时监控行业新闻案例

目录 背景环境准备请求网页数据解析网页数据定时任务综合代码使用代理IP提升稳定性运行截图与完整代码总结 在互联网时代&#xff0c;新闻的实时性和时效性变得尤为重要。很多行业、技术、商业等领域的新闻都可以为公司或者个人发展提供有价值的信息。如果你有一项需求是要实时…

语言大模型基础概念 一(先了解听说过的名词都是什么)

SFT&#xff08;监督微调&#xff09;和RLHF&#xff08;基于人类反馈的强化学习&#xff09;的区别 STF&#xff08;Supervised Fine-Tuning&#xff09;和RLHF&#xff08;Reinforcement Learning from Human Feedback&#xff09;是两种不同的模型训练方法&#xff0c;分别…

DeepSeek v3 技术报告阅读笔记

注 本文参考 DeepSeek-v3 / v2 / v1 Technical Report 及相关参考模型论文本文不包括基础的知识点讲解&#xff0c;为笔记/大纲性质而非教程&#xff0c;建议阅读技术报告原文交流可发送至邮箱 henryhua0721foxmail.com 架构核心 核心&#xff1a; MLA 高效推理DeepSeekMOE 更…

GESP2024年9月认证C++七级( 第三部分编程题(1)小杨寻宝)

参考程序&#xff1a; #include <bits/stdc.h> using namespace std; const int N 1e510; vector<int> g[N]; // 图的邻接表 int col[N], dep[N], has[N];// 深度优先遍历&#xff0c;计算每个节点的深度 void dfs(int x, int fa) {dep[x] dep[fa] 1; // 计算…

解锁电商数据宝藏:淘宝商品详情API实战指南

在电商蓬勃发展的今天&#xff0c;数据已成为驱动业务增长的核心引擎。对于商家、开发者以及数据分析师而言&#xff0c;获取精准、实时的商品数据至关重要。而淘宝&#xff0c;作为国内最大的电商平台&#xff0c;其海量商品数据更是蕴含着巨大的价值。 本文将带你深入探索淘…

webshell通信流量分析

环境安装 Apatche2 php sudo apt install apache2 -y sudo apt install php libapache2-mod-php php-mysql -y echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php sudo ufw allow Apache Full 如果成功访问info.php&#xff0c;则环境安…

在 rtthread中,rt_list_entry (rt_container_of) 已知结构体成员的地址,反推出结构体的首地址

rt_list_entry (rt_container_of)宏定义&#xff1a; /*** rt_container_of - return the start address of struct type, while ptr is the* member of struct type.*/ #define rt_container_of(ptr, type, member) \((type *)((char *)(ptr) - (unsigned long)(&((type *…

趣味魔法项目 LinuxPDF —— 在 PDF 中启动一个 Linux 操作系统

最近&#xff0c;一位开源爱好者开发了一个LinuxPDF 项目&#xff08;ading2210/linuxpdf: Linux running inside a PDF file via a RISC-V emulator&#xff09;&#xff0c;它的核心功能是在一个 PDF 文件中启动并运行 Linux 操作系统。它通过巧妙地使用 PDF 文件格式中的 Ja…

【Linux】Socket编程—TCP

&#x1f525; 个人主页&#xff1a;大耳朵土土垚 &#x1f525; 所属专栏&#xff1a;Linux系统编程 这里将会不定期更新有关Linux的内容&#xff0c;欢迎大家点赞&#xff0c;收藏&#xff0c;评论&#x1f973;&#x1f973;&#x1f389;&#x1f389;&#x1f389; 文章目…

新数据结构(9)——Java异常体系

异常的种类 程序本身通常无法主动捕获并处理错误&#xff08;Error&#xff09;&#xff0c;因为这些错误通常表示系统级的严重问题&#xff0c;但程序可以捕获并处理异常&#xff08;Excrption&#xff09;&#xff0c;而Error则被视为一种程序无法或不应尝试恢复的异常类型。…