大数据之Hadoop部署

文章目录

    • 服务器规划
    • 服务器环境准备
      • 1. 网络测试
      • 2. 安装额外软件包
      • 3. 安装基础工具
      • 4. 关闭防火墙
      • 5. 创建用户并配置权限
      • 6. 创建目录并设置权限
      • 7. 卸载JDK
      • 8. 修改主机名
      • 9. 配置hosts文件
      • 10. 重启服务器
    • 配置免密登录
    • 安装Java
    • 安装Hadoop
      • 1. Hadoop部署
      • 2. 配置Hadoop
      • 3. 格式化Hadoop文件系统
      • 4. 启动Hadoop集群
      • 5. 验证Hadoop集群
    • 注意事项
    • 参考文件

在这里插入图片描述

搭建一个Hadoop集群涉及到多个步骤,包括服务器规划, 服务器环境准备,配置SSH无密码登录,安装Java,安装Hadoop,配置Hadoop,以及格式化和启动Hadoop集群。以下是在三台CentOS系统服务器上搭建Hadoop集群的必要步骤和详细的描述:

服务器规划

  • 准备三台服务器(Hadoop101、Hadoop102、Hadoop103), 确保都已经安装了CentOS 7.9操作系统。
  • 为每台服务器配置静态IP地址,确保它们在同一子网内,并且子网掩码、网关和DNS设置正确。
  • 使得三台服务器之间可以互相ping通。
  • 确保三台服务器都能够访问互联网。
  • 角色规划
    • Hadoop101 作为NameNodeResourceManager,负责集群的文件系统命名空间和资源管理。
    • Hadoop102 作为SecondaryNameNode,辅助NameNode进行元数据备份,不直接处理客户端读写请求。
    • Hadoop101、Hadoop102、Hadoop103 作为DataNodeNodeManager,存储实际的数据块并提供计算能力
Hadoop101Hadoop102Hadoop103
NameNodeSecondaryNameNode-
DataNodeDataNodeDataNode
ResourceManager--
NodeManagerNodeManagerNodeManager

服务器环境准备

对每台服务器做如下检查和配置, 下面是在root用户下进行操作。

1. 网络测试

  • 确保虚拟机可以正常上网。
    ping www.baidu.com
    

2. 安装额外软件包

  • 安装epel-release以获取更多软件包。
    yum install -y epel-release
    

3. 安装基础工具

  • 如果是最小系统版,需要安装以下工具:
    • net-tools:包含ifconfig等网络配置命令。
      yum install -y net-tools
      
    • vim:文本编辑器。
      yum install -y vim
      

4. 关闭防火墙

  • 停止并禁用防火墙服务。
    systemctl stop firewalld
    systemctl disable firewalld.service
    

5. 创建用户并配置权限

  • 创建bigdata用户并设置密码。
    useradd bigdata
    passwd bigdata
    
  • 配置bigdata用户具有root权限,无需密码即可执行sudo命令。
    vim /etc/sudoers
    
    • /etc/sudoers文件中添加:
      bigdata   ALL=(ALL)     NOPASSWD:ALL
      

6. 创建目录并设置权限

  • /opt目录下创建modulesoftware文件夹。
    mkdir /opt/module
    mkdir /opt/software
    
  • 修改文件夹的所有者和所属组为bigdata
    chown bigdata:bigdata /opt/module
    chown bigdata:bigdata /opt/software
    
  • 查看文件夹的所有者和所属组。
    ls -al /opt
    

7. 卸载JDK

  • 如果服务器预装了JDK,执行以下命令卸载:
    rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps
    

8. 修改主机名

  • 登录到目标服务器:使用SSH或其他远程登录方式登录到需要修改主机名的服务器。
  • 编辑主机名配置文件:使用文本编辑器(如vim)编辑/etc/hostname文件。
    sudo vim /etc/hostname
    
  • 设置新的主机名:在文件中输入新的主机名,例如hadoop101,然后保存退出。
  • 更新系统识别的主机名:使更改立即生效,可以使用以下命令:
    sudo hostname -F /etc/hostname
    

9. 配置hosts文件

  • 打开hosts文件:编辑/etc/hosts文件,以将IP地址映射到相应的主机名。
    sudo vim /etc/hosts
    
  • 添加或更新条目:在文件中添加或更新映射关系,每条映射占一行,格式为IP地址 空格 主机名。例如:
    192.168.10.101 hadoop101
    192.168.10.102 hadoop102
    192.168.10.102 hadoop103
    
    这里的IP地址替换为自己服务器的IP地址。
  • 确保无重复条目:检查hosts文件以确保没有重复或冲突的条目,这可能会导致网络解析问题。
  • 保存并关闭文件:完成编辑后,保存更改并关闭文本编辑器。

10. 重启服务器

  • 完成配置后,重启服务器以应用更改。
    reboot
    

配置免密登录

为了方便管理,需要在服务器之间使用bigdata用户配置SSH无密码登录。

  1. 切换到bigdata 用户

    su bigdata
    
  2. hadoop101生成SSH密钥对:

    ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
    

    该命令会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)。

  3. hadoop101上执行命令 ssh-copy-id, 将hadoop101公钥复制到每台服务器的~/.ssh/authorized_keys

    ssh-copy-id hadoop101
    ssh-copy-id hadoop102
    ssh-copy-id hadoop103
    

安装Java

下面的操作使用bigdata 用户在 hadoop101上进行操作。

  • 切换到 /opt/software 目录

    cd /opt/software
    
  • 使用 wget 下载 Java 1.8 版本

    wget https://repo.huaweicloud.com/java/jdk/8u202-b08/jdk-8u202-linux-x64.tar.gz
    

    请检查链接是否有效,因为Oracle的下载链接可能会变化。

  • 使用 tar 解压文件到 /opt/module 目录

    tar -xzvf jdk-8u301-linux-x64.tar.gz -C /opt/module/
    
  • 生成软链接

    ln -s /opt/module/jdk1.8.0_301 /opt/module/jdk
    
  • 设置 JDK 的环境变量

    • 新建/etc/profile.d/bigdata_env.sh文件

      touch /etc/profile.d/bigdata_env.sh
      
    • 添加如下内容,然后保存(:wq)退出

      #JAVA_HOME
      export JAVA_HOME=/opt/module/jdk
      export PATH=$PATH:$JAVA_HOME/bin
      
    • 让环境变量生效

      source /etc/profile.d/bigdata_env.sh
      
  • 验证安装

    java -version
    echo $JAVA_HOME
    
  • 分发软件和环境变量

    • JAVA软件JAVA软连接环境变量配置文件 分发到hadoop102hadoop103
    # 分发到 hadoop102
    rsync -av "/opt/module/jdk1.8.0_202" "hadoop102:/opt/module"
    rsync -av "/opt/module/jdk" "hadoop102:/opt/module"
    sudo rsync -av "/etc/profile.d/bigdata_env.sh" "hadoop102:/etc/profile.d"
    # 分发到 hadoop103
    rsync -av "/opt/module/jdk1.8.0_202" "hadoop103:/opt/module/"
    rsync -av "/opt/module/jdk" "hadoop103:/opt/module/"
    sudo rsync -av "/etc/profile.d/bigdata_env.sh" "hadoop103:/etc/profile.d"
    

安装Hadoop

1. Hadoop部署

下面的操作使用bigdata 用户在 hadoop101上进行操作。

  • 进入Hadoop安装包路径

    • 打开终端,使用命令 cd /opt/software/ 进入包含Hadoop安装包的目录。
  • 下载Hadoop
    从华为镜像下载Hadoop的tar.gz包,并解压到合适的目录。

    # 下载hadoop3.3.1
    wget https://mirrors.huaweicloud.com/apache/hadoop/common/hadoop-3.1.3/hadoop-3.1.3.tar.gz
    
  • 解压Hadoop安装文件

    • 将Hadoop压缩包解压到/opt/module/目录。
      tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/
      
  • 验证解压结果

    • 通过执行命令 ls /opt/module/hadoop-3.1.3 来检查Hadoop目录是否存在,以确认解压操作是否成功。
  • 创建Hadoop软连接

    • 如果解压成功,创建软连接hadoop,以简化路径。
      ln -s /opt/module/hadoop-3.1.3 /opt/module/hadoop
      
  • 编辑环境变量配置文件

    • 首先,使用 pwd 命令获取当前Hadoop安装目录的完整路径。

    • 接着,使用 sudo vim /etc/profile.d/bigdata_env.sh 命令以超级用户权限打开环境变量配置文件进行编辑。

    • 在打开的配置文件中,滚动到文件末尾(使用 Shift + G)。

    • 添加以下行来设置Hadoop的环境变量:

      # HADOOP_HOME
      export HADOOP_HOME=/opt/module/hadoop
      export PATH=$PATH:$HADOOP_HOME/bin
      export PATH=$PATH:$HADOOP_HOME/sbin
      
    • 这些行将Hadoop的bin和sbin目录添加到系统的PATH环境变量中,使得可以在任何位置调用Hadoop的命令。

    • 在Vim编辑器中,使用 :wq 命令保存更改并退出编辑器。

  • 使环境变量生效

    • hadoop101上执行下面的命令
      source /etc/profile.d/bigdata_env.sh
      
  • 验证安装

    • 通过下面命令验证安装是否成功,以及环境变量是否生效。
      hadoop version
      echo $HADOOP_HOME
      
  • 分发软件和环境变量

    • Hadoop软件Hadoop软连接环境变量配置文件 分发到hadoop102hadoop103
      # 分发到 hadoop102
      rsync -av "/opt/module/hadoop-3.1.3" "hadoop102:/opt/module"
      rsync -av "/opt/module/hadoop" "hadoop102:/opt/module"
      sudo rsync -av "/etc/profile.d/bigdata_env.sh" "hadoop102:/etc/profile.d"
      # 分发到 hadoop103
      rsync -av "/opt/module/hadoop-3.1.3" "hadoop103:/opt/module/"
      rsync -av "/opt/module/hadoop" "hadoop103:/opt/module/"
      sudo rsync -av "/etc/profile.d/bigdata_env.sh" "hadoop103:/etc/profile.d"
      

2. 配置Hadoop

进入hadoop配置目录cd /opt/module/hadoop/etc/hadoop/, 修改Hadoop配置文件core-site.xml, hdfs-site.xml, yarn-site.xml, mapred-site.xml, workers ,设置集群模式和相关参数。

  • 文件core-site.xml配置:

    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    
    <configuration>
    	<!-- 指定NameNode的地址 -->
    	<property>
    	    <name>fs.defaultFS</name>
    	    <value>hdfs://hadoop101:8020</value>
    	</property>
    	<!-- 指定hadoop数据的存储目录 -->
    	<property>
    	    <name>hadoop.tmp.dir</name>
    	    <value>/opt/module/hadoop/data</value>
    	</property>
    	
    	<!-- 配置HDFS网页登录使用的静态用户为bigdata -->
    	<property>
    	    <name>hadoop.http.staticuser.user</name>
    	    <value>bigdata</value>
    	</property>
    	
    	<!-- 配置该bigdata(superUser)允许通过代理访问的主机节点 -->
    	<property>
    	    <name>hadoop.proxyuser.bigdata.hosts</name>
    	    <value>*</value>
    	</property>
    	<!-- 配置该bigdata(superUser)允许通过代理用户所属组 -->
    	<property>
    	    <name>hadoop.proxyuser.bigdata.groups</name>
    	    <value>*</value>
    	</property>
    	<!-- 配置该bigdata(superUser)允许通过代理的用户-->
    	<property>
    	    <name>hadoop.proxyuser.bigdata.users</name>
    	    <value>*</value>
    	</property>
    </configuration>
    
  • 文件hdfs-site.xml配置:

    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    
    <configuration>
    	<!-- nn web端访问地址-->
    	<property>
            <name>dfs.namenode.http-address</name>
            <value>hadoop101:9870</value>
        </property>
        
    	<!-- 2nn web端访问地址-->
        <property>
            <name>dfs.namenode.secondary.http-address</name>
            <value>hadoop102:9868</value>
        </property>
        
        <!-- 测试环境指定HDFS副本的数量1 -->
        <property>
            <name>dfs.replication</name>
            <value>3</value>
        </property>
    </configuration>
    
  • 文件yarn-site.xml配置

    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    
    <configuration>
    	<!-- 指定MR走shuffle -->
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
        
        <!-- 指定ResourceManager的地址-->
        <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>hadoop101</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>true</value>
        </property>
        <property>
            <name>yarn.nodemanager.vmem-check-enabled</name>
            <value>false</value>
        </property>
    </configuration>
    
  • 文件mapred-site.xml配置

    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    
    <configuration>
    	<!-- 指定MapReduce程序运行在Yarn上 -->
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
    </configuration>
    
  • 文件workers配置

    hadoop101
    hadoop102
    hadoop103
    
  • 分发配置文件

    • 将配置文件分发到hadoop102hadoop103
      # 分发到 hadoop102
      rsync -av "/opt/module/hadoop/etc/hadoop" "hadoop102:/opt/module/hadoop/etc/"
      # 分发到 hadoop103
      rsync -av "/opt/module/hadoop/etc/hadoop" "hadoop103:/opt/module/hadoop/etc/"
      

3. 格式化Hadoop文件系统

  • 在NameNode服务器上(hadoop101)格式化Hadoop文件系统。

    hdfs namenode -format
    

4. 启动Hadoop集群

  • 启动Hadoop集群的所有守护进程。

    start-dfs.sh
    start-yarn.sh
    

5. 验证Hadoop集群

  • 使用jps命令检查Java进程,确认Hadoop守护进程是否启动。

    jps
    # hadoop101 上启动以下进程
    6084 DataNode
    6552 NodeManager
    6426 ResourceManager
    5935 NameNode
    # hadoop102 上启动以下进程
    30834 ResourceManager
    28487 SecondaryNameNode
    28695 NodeManager
    28379 DataNode
    # hadoop103 上启动以下进程
    2466 NodeManager
    2340 DataNode
    
  • 页面查看

    • hdfs 页面地址 http://hadoop101:9870
      在这里插入图片描述

    • yarn 页面地址 http://hadoop101:8088

    在这里插入图片描述

注意事项

  • 企业开发中,单个服务器的防火墙通常是关闭的,但公司整体会设置安全的防火墙。

参考文件

Java | 华为镜像仓库

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【自动驾驶汽车通讯协议】深入理解PCI Express(PCIe)技术

文章目录 0. 前言1. PCIe简介1.1 PCIe外观1.2 PCIe的技术迭代 2. PCIe的通道&#xff08;lane&#xff09;配置2.1 通道配置详解2.2 通道配置的影响 3. PCIe的架构3.1 架构层次3.2 核心组件 4. PCIe的特性5. PCIe在自动驾驶中的应用 0. 前言 按照国际惯例&#xff0c;首先声明&…

scatterlist的相关概念与实例分析

概念 scatterlist scatterlist用来描述一块内存&#xff0c;sg_table一般用于将物理不同大小的物理内存链接起来&#xff0c;一次性送给DMA控制器搬运 struct scatterlist {unsigned long page_link; //指示该内存块所在的页面unsigned int offset; //指示该内存块在页面中的…

java实现图片添加水印

文章目录 前言一、工具类WatermarkUtil二、工具类介绍2.1 图片来源类型2.2 水印类型2.3 读取本地图片2.4 读取网络图片2.5 水印处理2.6 添加水印 三、测试添加水印总结 前言 给图片添加水印是一个很常见的需求&#xff0c;一般是用来防盗用。比如我们csdn上面写的文章中&#…

【docker】2. 编排容器技术发展史(了解)

该篇文章介绍的主要是编排以及容器技术的发展史(了解即可)&#xff0c;如果想单纯学习docker命令操作可直接略过&#xff01;&#xff01;&#xff01; 容器技术发展史 Jail 时代 容器不是一个新概念或者新技术&#xff0c;很早就有了&#xff0c;只是近几年遇到了云计算&am…

API-节点操作

学习目标&#xff1a; 掌握节点操作 学习内容&#xff1a; DOM节点查找节点增加节点删除节点 DOM节点&#xff1a; DOM树里每一个内容都称之为节点。 节点类型 元素节点所有的标签比如body、div&#xff1b;html是根节点属性节点所有的属性&#xff0c;比如href文本节点所有…

前端git约定式规范化提交-commitizen

当使用commitizen进行代码提交时&#xff0c;commitizen会提示你在提交代码时填写所必填的提交字段信息内容。 1、全局安装commitizen npm install -g commitizen4.2.4 2、安装并配置 cz-customizeable 插件 2.1 使用 npm 下载 cz-customizeable npm i cz-customizeable6.…

TS_类型

目录 1.类型注解 2.类型检查 3.类型推断 4.类型断言 ①尖括号&#xff08;<>&#xff09;语法 ②as语法 5.数据类型 ①boolean ②number ③string ④undefined 和 null ⑤数组和元组 ⑥枚举 ⑦any 和void ⑧symbol ⑨Function ⑩Object 和 object 6.高…

精品UI知识付费系统源码网站EyouCMS模版源码

这是一款知识付费平台模板&#xff0c;后台可上传本地视频&#xff0c;批量上传视频连接&#xff0c; 视频后台可设计权限观看&#xff0c;免费试看时间时长&#xff0c;会员等级观看&#xff0c;付费观看等功能&#xff0c; 也带软件app权限下载&#xff0c;帮助知识教育和软件…

通讯录管理系统——删除联系人——检测联系人是否存在

功能描述&#xff1a;按照姓名删除指定联系人 删除联系人实现步骤&#xff1a; 1.封装检测联系人是否存在 2.封装删除联系人函数 3.测试删除联系人功能 一、封装检测联系人是否存在 设计思路&#xff1a; 删除联系人前&#xff0c;我们需要先判断用户输入的联系人是否存…

饮料添加剂光照试验太阳光模拟器试验箱

饮料添加剂光照试验是一种用来评估饮料在光照条件下稳定性的实验方法。这个过程通常包括以下几个步骤&#xff1a; 样品准备&#xff1a; 首先&#xff0c;将饮料密封在市售包装或近似市售包装中&#xff0c;确保包装的完整性和密封性。 光照条件设置&#xff1a; 将封装好的…

【云原生】深入理解Pod的使用进行管理

深入理解Pod 文章目录 深入理解Pod一、介绍Pod1.1、什么是Pod1.2、Pod的特点1.3、Pod的用途1.4、Pod网络1.5、Pod存储1.6、Pod的工作方式 二、创建Pod2.1、命令行创建Pod2.2、资源清单创建Pod2.2.1、镜像拉取策略2.2.2、Pod重启策略2.2.3、部署资源2.2.4、删除资源 三、静态Pod…

自养号测评助力:亚马逊、沃尔玛电商高效测评补单技巧,轻松实现销量与补单双赢

要在竞争激烈的市场中通过测评补单的方式提升产品权重和销售&#xff0c;构建一个稳定且高效的测评补单系统至关重要。通过精心培养一批高质量的买家账号&#xff0c;并深入了解真实买家的行为数据&#xff0c;结合对风控数据的精准把控&#xff0c;我们能够自主推动推广进程&a…

25岁庆生|人大金仓带你这样过!

25年&#xff0c;是一个重要的时间节点 一个世纪的四分之一 百年基业的第一站&#xff0c;我们已经走过 人大金仓即将25岁了&#xff0c;感谢有你 趣味运动会 今日上午 二十五周年司庆终极活动正式开启 北京、成都、天津、青岛、西安 五地同步举行趣味运动会 活力四射的集体健走…

datax入门(data-web的简单使用)——02

datax入门&#xff08;data-web的简单使用&#xff09;——02 1. 前言1.1 关于data-web官网1.1.1 源码下载1.1.2 datax-Web部署手册1.1.2.1 Linux环境部署手册1.1.2.2 本地开发环境部署手册 1.2 关于datax入门 2. 下载之后打包、启动、登录2.1 我的本地环境2.2 修改配置2.3 初始…

记一次小程序渗透

这次的小程序渗透刚好每一个漏洞都相当经典所以记录一下。 目录 前言 漏洞详情 未授权访问漏洞/ 敏感信息泄露&#xff08;高危&#xff09; 水平越权&#xff08;高危&#xff09; 会话重用&#xff08;高危&#xff09; 硬编码加密密钥泄露&#xff08;中危&#xff0…

【Python报错】已解决 ModuleNotFoundError: No module named ‘transformers‘

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引入 ModuleNotFoundError: No module named ‘transformers’ 是一个常见的错误&#xff0c;它表明你的Python环境中没有安装t…

普及GIS知识,推动产业发展

915 GIS节&#xff1a;普及GIS知识&#xff0c;推动产业发展 自2008年起&#xff0c;每年的9月15日被定为“GIS节”&#xff0c;这一特殊的节日由超图首次发起倡议&#xff0c;旨在打造一个普及和传播GIS&#xff08;地理信息系统&#xff09;知识的平台&#xff0c;促进大众对…

一次可输入多张图像,还能多轮对话!最新开源数据集,让AI聊天更接近现实

大模型对话能更接近现实了&#xff01; 不仅可以最多输入20张图像&#xff0c;还能支持多达27轮对话。可处理文本图像tokens最多18k。 这就是最新开源的超长多图多轮对话理解数据集MMDU&#xff08;Multi-Turn Multi-Image Dialog Understanding&#xff09;。 大型视觉语言模…

Python数据分析案例47——笔记本电脑价格影响因素分析

案例背景 博主对电脑的价格和配置一直略有研究&#xff0c;正好最近也有笔记本电脑相关的数据&#xff0c;想着来做点分析吧&#xff0c;写成一个案例。基本上描述性统计&#xff0c;画图&#xff0c;分组聚合&#xff0c;机器学习&#xff0c;交叉验证&#xff0c;搜索超参数…

【Vision Transformers-VIT】: 计算机视觉中的Transformer探索

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…