工欲善其事,必先利其器;小白入门Hadoop必备过程

1. 安装JDK1.8

官网下载安装包,上传至服务器,解压tar包

txt 复制代码
http://planetone.online/downloads/java/jdk/jdk-8u221-linux-x64.tar.gz

上传安装包至服务器并解压到指定目录:

txt 复制代码
tar -zxvf jdk-8u221-linux-x64.tar.gz -C /opt/module/

2. 配置java环境变量、生效

编辑 /etc/profile 文件,加入以下内容:

shell 复制代码
vi /etc/profile
shell 复制代码
export JAVA_HOME=/opt/module/jdk1.8.0_221
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

3. 把上述环境变量添加到/etc/profile中并生效

shell 复制代码
source /etc/profile

4. 检测Java版本:

shell 复制代码
java -version

一、Hadoop 简介

Hadoop是一个由Apache基金会开发的开源分布式系统框架,旨在让用户能够轻松开发分布式应用程序,而无需深入了解底层的分布式细节。它能够充分利用集群计算的能力,进行高效的存储和处理大规模数据。

Hadoop框架的核心组件之一是HDFS(Hadoop Distributed File System),一个为大数据存储设计的分布式文件系统。HDFS具有高容错性,可以在低成本硬件上部署,并能提供高吞吐量的数据访问,特别适合处理超大数据集的应用场景。与传统的文件系统不同,HDFS放宽了POSIX文件系统的要求,支持流式数据访问,能够更高效地读写大规模数据。

Hadoop的核心设计理念包含两个主要组成部分:

  1. HDFS:为大规模数据集提供可靠的存储。
  2. MapReduce:为这些数据提供高效的计算能力。

通过HDFS和MapReduce的结合,Hadoop能够处理海量的数据存储与计算任务,广泛应用于大数据处理、分析和存储等领域。

二、Hadoop 单机安装

1、下载 Hadoop 安装文件

Hadoop 目前最新的版本为 3.3.6 ,下载地址如下:archive.apache.org/dist/hadoop...

2、安装 Hadoop

修改主机名

将主机名称改为 hadoop1,命令如下:

bash 复制代码
hostnamectl set-hostname hadoop1

修改后,使用如下命令查看主机名:

bash 复制代码
hostname

修改主机列表

修改 /etc/hosts 中的内容,增加如下配置:

上传安装包到指定目录

将 hadoop-3.3.6.tar.gz 上传到指定目录,如:/home/tools/ (根据实际情况,选择一个目录存放安装包)

解压到指定目录

将 hadoop-3.3.6.tar.gz 解压到 /home/hadoop/ 目录下(根据实际情况,选择安装目录),命令如下:

shell 复制代码
tar -zxvf hadoop-3.3.6.tar.gz -C /home/hadoop/

创建数据存储目录

shell 复制代码
mkdir -p /home/hadoop/hdfs/tmp /home/hadoop/hdfs/data /home/hadoop/hdfs/name

3、修改配置

修改环境变量

在 /etc/profile 文件内容最后,追加环境变量,命令如下:

shell 复制代码
vim /etc/profile

增加内容如下:

shell 复制代码
export HADOOP_HOME=/home/hadoop/hadoop-3.3.6
export PATH=$PATH:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin

使用如下命令,使环境变量生效:

shell 复制代码
source /etc/profile

使用如下命令,验证环境变量是否生效:

shell 复制代码
echo $HADOOP_HOME

修改 hadoop-env.sh

修改/home/hadoop/hadoop-3.3.6/etc/hadoop/hadoop-env.sh,设置 JAVA_HOMEHADOOP_HOME 变量。

通过如下命令,查询 JAVA_HOME 配置:

shell 复制代码
echo $JAVA_HOME

修改内容如下:

shell 复制代码
export JAVA_HOME=/opt/module/jdk1.8.0_221
export HADOOP_HOME=/home/hadoop/hadoop-3.3.6

设置 root 账户,修改内容如下:

shell 复制代码
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

修改 core-site.xml

core-site.xml 文件用于配置 Hadoop 的核心组件,尤其是与 HDFS 的连接和文件系统相关的设置。

修改/home/hadoop/hadoop-3.3.6/etc/hadoop/core-site.xml,在 configuration 标签中,添加如下内容:

重要配置项:

  • fs.defaultFS:指定 Hadoop 使用的文件系统,通常设置为 HDFS。
  • hadoop.tmp.dir:指定 Hadoop 的临时目录,用于存储临时数据。
  • hadoop.proxyuser.root.hostshadoop.proxyuser.root.groups :这两个配置允许用户 root 代理执行某些操作。
shell 复制代码
    <!-- 指定 NameNode 的地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop1:9090</value>
    </property>

    <!-- 指定 hadoop 数据的存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/hadoop/hdfs/tmp</value>
    </property>

    <property>
        <name>hadoop.proxyuser.root.hosts</name>
        <value>*</value>
    </property>

    <property>
        <name>hadoop.proxyuser.root.groups</name>
        <value>*</value>
    </property>

修改 hdfs-site.xml

hdfs-site.xml 文件用于配置 HDFS 的特性和行为,包括数据存储和副本设置。

修改/home/hadoop/hadoop-3.3.6/etc/hadoop/hdfs-site.xml,在 configuration 标签中,添加如下内容:

重要配置项:

  • dfs.replication:指定 HDFS 中文件的副本数。
  • dfs.namenode.name.dir:指定 NameNode 的元数据存储目录。
  • dfs.datanode.data.dir:指定 DataNode 存储数据块的目录。
  • dfs.http.address:指定 NameNode Web UI 的访问地址
  • dfs.permissions:启用或禁用 HDFS 的权限检查。
shell 复制代码
    <property>
        <name>dfs.replication</name>      
        <value>1</value>
        <description>副本个数,配置默认是3,应小于datanode机器数量</description>
    </property>  

    <property>
        <name>dfs.namenode.name.dir</name>  
        <value>/home/hadoop/hdfs/name</value>  
        <final>true</final>
    </property>  

    <property>
        <name>dfs.datanode.data.dir</name>  
        <value>/home/hadoop/hdfs/data</value>  
        <final>true</final>
    </property>  

    <property>
        <name>dfs.http.address</name>
        <value>0.0.0.0:50070</value>
        <description>将绑定IP改为0.0.0.0,而不是本地回环IP,这样,就能够实现外网访问本机的50070端口了</description>
    </property>

    <property>
        <name>dfs.permissions</name>  
        <value>false</value>
    </property>

修改 mapre-site.xml

mapred-site.xml 文件用于配置 MapReduce 的框架和作业执行相关的设置。

修改/home/hadoop/hadoop-3.3.6/etc/hadoop/mapred-site.xml,在 configuration 标签中,添加如下内容:

重要配置项:

  • mapreduce.framework.name:指定 MapReduce 使用的计算框架。
  • 指定 MapReduce 任务由 YARN 管理和执行。对于 YARN 集群,mapreduce.framework.name 必须设置为 yarn
shell 复制代码
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>

修改 yarn-site.xml

yarn-site.xml 文件用于配置 YARN(Yet Another Resource Negotiator)相关的设置,包括资源管理和调度。

修改/home/hadoop/hadoop-3.3.6/etc/hadoop/yarn-site.xml,在 configuration 标签中,添加如下内容:

重要配置项:

  • yarn.nodemanager.aux-services :指定 YARN NodeManager 附加的服务:配置 NodeManager 使用 mapreduce_shuffle 服务,支持 MapReduce Shuffle 阶段。
  • yarn.resourcemanager.address :指定 ResourceManager 的地址:hadoop1:8032 表示 ResourceManager 监听的地址和端口号。
shell 复制代码
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

格式化 HDFS

shell 复制代码
hdfs namenode -format

4、启动 Hadoop

启动 Hadoop 服务

shell 复制代码
cd /home/hadoop/hadoop-3.3.6/sbin
shell 复制代码
./start-all.sh

注意:此时有报错信息:"localhost: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password)."此时,需要配置免密登录。

生产私钥,命令如下(输入两次回车):

shell 复制代码
ssh-keygen -t rsa -P ""

复制授权秘钥,命令如下:

shell 复制代码
cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys

再次执行

shell 复制代码
./start-all.sh

即可正常执行。使用 jps 命令查看进程,效果如下(出现6个进程为正常):

5、访问 Hadoop 管理页面

http://Hadoop机器IP:50070/

http://Hadoop机器IP:8088/

相关推荐
王二端茶倒水16 分钟前
大龄程序员兼职跑外卖第五周之亲身感悟
前端·后端·程序员
夜色呦1 小时前
现代电商解决方案:Spring Boot框架实践
数据库·spring boot·后端
爱敲代码的小冰1 小时前
spring boot 请求
java·spring boot·后端
java小吕布3 小时前
Java中的排序算法:探索与比较
java·后端·算法·排序算法
李少兄3 小时前
解决 Spring Boot 中 `Ambiguous mapping. Cannot map ‘xxxController‘ method` 错误
java·spring boot·后端
代码小鑫4 小时前
A031-基于SpringBoot的健身房管理系统设计与实现
java·开发语言·数据库·spring boot·后端
Json____4 小时前
学法减分交管12123模拟练习小程序源码前端和后端和搭建教程
前端·后端·学习·小程序·uni-app·学法减分·驾考题库
monkey_meng4 小时前
【Rust类型驱动开发 Type Driven Development】
开发语言·后端·rust
落落落sss4 小时前
MQ集群
java·服务器·开发语言·后端·elasticsearch·adb·ruby