Hadoop完全分布式部署(超详细)

Hadoop完全分布式部署


目录

集群规划

准备3台服务器,具体规划如下:
一、非高可用模式

服务器node1 服务器node2 服务器node3
HDFS NameNode DataNode DataNode DataNode SecondaryNameNode
Yarn NodeManager Resourcemanager NodeManager NodeManager

二、高可用模式

服务器node1 服务器node2 服务器node3
HDFS NameNode DataNode NameNode DataNode DataNode
Yarn NodeManager Resourcemanager NodeManager Resourcemanager NodeManager

官网

点击:Hadoop官网下载地址

非高可用模式部署

  1. 去官网下载对应版本,然后上传解压(我用的是3.1.3的版本)

  2. 配置环境变量:vi /etc/profile.d/my_env.sh

    shell 复制代码
    #hadoop
    export HADOOP_HOME=/opt/install/hadoop-3.1.3
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
  3. 配置etc/hadoop/core-site.xml文件

    xml 复制代码
    <!-- 指定NameNode的地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop102:8020</value>
    </property>
    <!-- 指定hadoop数据的存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/install/hadoop-3.1.3/data</value>
    </property>
    <!-- 配置HDFS网页登录使用的静态用户为jack -->
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>jack</value>
    </property>
    <!-- 以下配置主要是用hive操作hdfs的时候,当使用beeline客户端就会设计到用户的一个问题,要使用代理操作才能正常使用 -->
    <!-- 配置该jack允许通过代理访问的主机节点 -->
    <property>
        <name>hadoop.proxyuser.jack.hosts</name>
        <value>*</value>
    </property>
    <!-- 配置该jack允许通过代理用户所属组 -->
    <property>
        <name>hadoop.proxyuser.jack.groups</name>
        <value>*</value>
      </property>
    <!-- 配置该jack允许通过代理的用户-->
    <property>
        <name>hadoop.proxyuser.jack.users</name>
        <value>*</value>
    </property>
  4. 配置etc/hadoop/hdfs-site.xml文件

    xml 复制代码
    <!-- nn web端访问地址-->
      <property>
        <name>dfs.namenode.http-address</name>
        <value>hadoop102:9870</value>
    </property>
      <!-- 2nn web端访问地址-->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop104:9868</value>
    </property>
    <!-- 测试环境指定HDFS副本的数量 -->
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
  5. 配置etc/hadoop/yarn-site.xml文件

    xml 复制代码
    <!-- 指定MR走shuffle -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <!-- 指定ResourceManager的地址-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop103</value>
    </property>
    <!-- 环境变量的继承 -->
    <property>
        <name>yarn.nodemanager.env-whitelist</name>
        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
    </property>
    <!-- yarn容器允许分配的最大最小内存 -->
    <property>
        <name>yarn.scheduler.minimum-allocation-mb</name>
        <value>512</value>
    </property>
    <property>
        <name>yarn.scheduler.maximum-allocation-mb</name>
        <value>4096</value>
    </property>
    <!-- yarn容器允许管理的物理内存大小 -->
    <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>4096</value>
    </property>
    <!-- 关闭yarn对物理内存和虚拟内存的限制检查 -->
    <property>
        <name>yarn.nodemanager.pmem-check-enabled</name>
        <value>false</value>
    </property>
    <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
    </property>
    <!-- 开启日志聚集功能 -->
    <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>
    <!-- 设置日志聚集服务器地址 -->
    <property>  
    	<name>yarn.log.server.url</name>  
    	<value>http://hadoop102:19888/jobhistory/logs</value>
    </property>
    <!-- 设置日志保留时间为7天 -->
    <property>
    	<name>yarn.log-aggregation.retain-seconds</name>
    	<value>604800</value>
    </property>
  6. 配置etc/hadoop/mapred-site.xml文件

    xml 复制代码
    <!-- 指定MapReduce程序运行在Yarn上 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <!-- 历史服务器端地址 -->
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>hadoop102:10020</value>
    </property>
    <!-- 历史服务器web端地址 -->
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>hadoop102:19888</value>
    </property>
  7. 修改hadoop-env.sh配置文件

    shell 复制代码
    # pids路径:如果不修改,会存储在hadoop默认的临时存储路径tmp里面,这个目录过段时间hadoop会自动删除,如果pids被删除了,hadoop启动和停止会报错
    export HADOOP_PID_DIR=/opt/install/hadoop-3.1.3/pids
    # namenode/datanode-memory:增大namenode内存是因为默认的内存很少
    export HDFS_NAMENODE_OPTS="-Dhadoop.security.logger=INFO,RFAS -Xmx4096m"
    export HDFS_DATANODE_OPTS="-Dhadoop.security.logger=ERROR,RFAS -Xmx8192m"
  8. 修改yarn-env.sh配置文件

    shell 复制代码
    # 新版本要求yarn的pid
    export HADOOP_PID_DIR=/opt/install/hadoop-3.1.3/pids
  9. 修改mapred-env.sh配置文件

    shell 复制代码
    export HADOOP_PID_DIR=/opt/install/hadoop-3.1.3/pids
  10. 配置workers

    shell 复制代码
    # 删除之前的localhost
    hadoop102
    hadoop103
    hadoop104
  11. 将hadoop3.1.3分发到hadoop103和hadoop104

    shell 复制代码
    scp -r /opt/install/hadoop-3.1.3 hadoop103:/opt/install/
    scp -r /opt/install/hadoop-3.1.3 hadoop104:/opt/install/
  12. 分发环境变量,记得source一下

  13. 第一次启动需要格式化namenode:hdfs namenode -format

  14. 启动hdfs:start-dfs.sh

  15. 启动yarn:start-yarn.sh

  16. 开启历史服务器:mapred --daemon start historyserver

  17. web访问hdfs:hadoop102:9870

  18. web访问yarn:hadoop102:8088

  19. web访问历史服务:hadoop102:19888

高可用模式部署

正在更新中,请耐心等待...

相关推荐
XDevelop AI智能应用软件开发11 分钟前
从“经验主义”到“AI赋能”:软件工程理论的二次觉醒
大数据
Are_You_Okkk_20 分钟前
AI开源知识库跨部门闭环搭建,效率提升40%
大数据·运维·人工智能·架构·开源
AIminminHu24 分钟前
OpenGL渲染与几何内核那点事-项目实践理论补充(一-2-(3)-当你的协同CAD服务器面临“千人同屏”时:从单机优化到分布式高并发)
运维·服务器·分布式
Omics Pro30 分钟前
基因集(模块)活性量化:R语言+Java原生
大数据·开发语言·前端·javascript·数据库·r语言·aigc
chushiyunen32 分钟前
llama-index 数据清洗示例、数据清洗等
java·大数据·llama
piepis41 分钟前
Flink一致性实现原理
大数据·flink
LiLiYuan.1 小时前
【Elasticsearch扫盲】
大数据·elasticsearch·搜索引擎
财经资讯数据_灵砚智能1 小时前
全球财经资讯日报(日间)2026年4月1日
大数据·人工智能·python·语言模型·ai编程
Elastic 中国社区官方博客1 小时前
从判断列表到训练好的 Learning to Rank( LTR )模型
大数据·数据库·人工智能·深度学习·elasticsearch·搜索引擎·全文检索
真上帝的左手1 小时前
12. 消息队列-RabbitMQ-高可用核心机制
分布式·rabbitmq·java-rabbitmq·mq