搭建 Hadoop 3.3.6 伪分布式

news/2025/2/21 6:59:31

搭建 Hadoop 3.3.6 伪分布式

  • IP
    • 192.168.157.132

初始化操作

更改yum源

# 1_1.安装Wget
yum install wget

# 1_2.备份CentOS-Base.repo文件
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak

# 2.下载阿里yum源配置
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo

# 3.清除系统所有的yum缓存
yum clean all

# 4.重新缓存
yum makecache

# 5.更新yum源
yum update -y

# 6.安装基础工具
sudo yum install -y wget epel-release vim net-tools

设置开机时关闭GUI

# 用下面命令查看查看是哪个模式
systemctl get-default 

# 命令模式(生产环境推荐)
systemctl set-default multi-user.target

# 图形模式
systemctl set-default graphical.target

关闭防火墙

systemctl stop firewalld.service
systemctl disable firewalld.service

创建专用账户

# 创建hadoop系统账户
sudo useradd -m hadoop -s /bin/bash
echo "hadoop:your_password" | sudo chpasswd  # 设置密码

# 配置sudo权限
sudo echo "hadoop ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/hadoop
1. 进入命令行模式

Ctrl + Alt + T 进入终端。

hadoop__69">2. 创建 hadoop 用户

使用 useradd 命令创建 hadoop 用户,并指定 bash 作为默认 shell:

sudo useradd -m hadoop -s /bin/bash
hadoop__77">3. 设置 hadoop 用户密码

使用 chpasswd 命令设置密码(请替换 your_password 为实际密码):

echo "hadoop:your_password" | sudo chpasswd
4. 配置 sudo 权限
hadoop__sudo__87">方法 1:赋予 hadoop 用户 sudo 权限

执行以下命令,将 hadoop 用户添加到 sudo 组:

sudo adduser hadoop sudo
方法 2:配置无密码 sudo 权限

编辑 sudoers 文件,使 hadoop 用户在执行 sudo 命令时无需输入密码:

echo "hadoop ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/hadoop
5. 说明
  • 如果使用 CentOS 7 并已创建 hadoop 用户,则无需执行第 2 和第 4 步。
  • 方法 1 和方法 2 任选其一,推荐使用方法 1,避免安全风险。

初始化文件路径

# 软件安装路径
mkdir /home/dolphin/module

# 安装包存放路径
mkdir /home/dolphin/software

# 修改文件夹所有者(hadoop用户)
chown -R hadoop.hadoop /home/dolphin/module
chown -R hadoop.hadoop /home/dolphin/software

# 创建软链接
ln -s /home/dolphin/module /opt/module
ln -s /home/dolphin/software /opt/software

配置 hosts 列表

vim /etc/hosts

# 添加如下内容
-----------------------------------------------------Start
192.168.157.132 dolphin
-----------------------------------------------------End

修改主机名

hostnamectl set-hostname dolphin

hostnamectl set-hostname 主机名

配置ssh免密登录

ssh-keygen -t rsa

# ssh-copy-id 用户名@主机名
ssh-copy-id root@dolphin

# 或
ssh-copy-id dolphin

安装Java并配置环境变量

# 1.检测是否安装OpenJDK,存在则删除
rpm -qa | grep java
rpm -e --nodeps java-1.8.0-openjdk
rpm -e --nodeps java-1.8.0-openjdk-headless
rpm -e --nodeps java-1.7.0-openjdk
rpm -e --nodeps java-1.7.0-openjdk-headless


# 2.下载JDK二进制安装包
cd /opt/software
wget https://download.oracle.com/otn/java/jdk/8u221-b11/230deb18db3e4014bb8e3e8324f81b43/jdk-8u201-linux-x64.tar.gz
# 3.解压jdk 
tar -zxf /opt/software/jdk-8u201-linux-x64.tar.gz -C /opt/module/

# 4.JDK环境变量配置
#==>修改环境变量
vim /etc/profile
#==>profile追加文件内容
-----------------------------------------------------Start
#JAVA_HOME
JAVA_HOME=/opt/module/jdk1.8.0_201
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
-----------------------------------------------------End
#==>使配置文件生效
source /etc/profile

安装MySQL

1.下载二进制Linux版的文件

# 1.解压
tar -zxf /opt/software/mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz -C /opt/module

# 2.建立软链接
cd /opt/module
ln -s mysql-5.7.25-linux-glibc2.12-x86_64 mysql

# 3.配置环境变量
vim /etc/profile

#==>profile追加文件内容
-----------------------------------------------------Start
#MYSQL_HOME
MYSQL_HOME=/opt/module/mysql-5.7.25-linux-glibc2.12-x86_64
export PATH=$PATH:$MYSQL_HOME/bin
export PATH=$PATH:$MYSQL_HOME/support-files
-----------------------------------------------------End
#==>使配置文件生效
source /etc/profile

# 4.创建初始化目录
cd /opt/module/mysql-5.7.25-linux-glibc2.12-x86_64
mkdir ./{data,log,sock,pids}
mkdir ./{etc,run}
chown -R hadoop.hadoop *
chmod 755 {data,sock,pids}

# 5.配置my.cnf
sudo vim /etc/my.cnf

#==>my.cng文件内容
------------------------------------------------------Start
[mysqld]#服务端基本设置
basedir=/opt/module/mysql #使用该目录作为根目录(安装目录)
datadir=/opt/module/mysql/data #数据文件存放的目录
port=3306 #MySQL监听端口
socket=/opt/module/mysql/sock/mysql.sock #用于本地连接的socket套接字
bind-address = 0.0.0.0
server-id = 1
log-error=/opt/module/mysql/log/mysql.log

user=hadoop
#skip-grant-tables #mysql设置跳过密码登录

[mysqld_safe]
log-error=/opt/module/mysql/log/logger.log
pid-file=/opt/module/mysql/pids/mysqld.pid

[client]
default-character-set=utf8
socket=/opt/module/mysql/sock/mysql.sock #用于本地连接的socket套接字

[mysql]
default-character-set=utf8
socket=/opt/module/mysql/sock/mysql.sock #用于本地连接的socket套接字

[mysqld_safe]
!includedir /etc/my.cnf.d

------------------------------------------------------End

# 6.初始化数据库
mysqld --defaults-file=/etc/my.cnf --initialize  #(必须在创建my.cnf之后)


# 7.生成ssl(非必须)	
mysql_ssl_rsa_setup --basedir=/opt/module/mysql --datadir=/opt/module/mysql/data

# 8.1启动MySQL
mysql.server restart
或
./support-files/mysql.server restart

# 8.2查看mysql进程
ps -ef|grep mysql

# 9.查看密码
grep 'temporary password' /opt/module/mysql/log/logger.log

# 10.修改MySQL密码
use mysql;
update mysql.user set authentication_string=password('root') where User="root" and Host="localhost";

# 11.配置MySQL远程访问
alter user user() identified by "root";
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
flush privileges;

# 12.开放3306端口
firewall-cmd --permanent --add-port=3306/tcp
***********************************************************
# 1.创建systemctl管理mysql的配置文件

vim /usr/lib/systemd/system/mysql.service
which mysqld  # (查找mysqld路径)

#==>mysql.service文件内容
-----------------------------------------------------Start
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target

[Service]
# ExecStart=/opt/module/mysql-5.7.25-linux-glibc2.12-x86_64/bin/mysqld --defaults-file=/etc/my.cnf
#关键开头************
Type=forking
ExecStart=/bin/bash /opt/module/mysql-5.7.25-linux-glibc2.12-x86_64/support-files/mysql.server start
ExecStop=/bin/bash /opt/module/mysql-5.7.25-linux-glibc2.12-x86_64/support-files/mysql.server stop
ExecRestart=/bin/bash /opt/module/mysql-5.7.25-linux-glibc2.12-x86_64/support-files/mysql.server restart
#关键结尾************
LimitNOFILE = 5000
Restart=on-failure
RestartPreventExitStatus=1
PrivateTmp=false
-----------------------------------------------------End
# 2_1.重新载入systemd
systemctl daemon-reload

# 2_2.激活mysql.serivce配置文件(用于systemctl控制)
systemctl enable mysql.service

# 3.通过systemctl来启动mysql
systemctl start mysql

Hadoop 3.3.6 伪分布式配置部署

下载并解压 Hadoop

cd /opt/software
wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz

#解压Hadoop
tar -zxf /opt/software/hadoop-3.3.6.tar.gz -C /opt/module/

#初始化
cd /opt/module/hadoop-3.3.6
mkdir -p /opt/module/hadoop-3.3.6/hdfs/data /opt/module/hadoop-3.3.6/hdfs/name

配置 Hadoop 环境变量

#==>修改环境变量
vim /etc/profile
#==>profile追加文件内容
-----------------------------------------------------Start
#HADOOP_HOME
HADOOP_HOME=/opt/module/hadoop-3.3.6
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
-----------------------------------------------------End
source /etc/profile

配置 core-site.xml

vim $HADOOP_HOME/etc/hadoop/core-site.xml

# 修改内容如下:
<configuration>
    <!-- 指定HDFS中NameNode的地址 -->
    <!-- 注意: hadoop1.x时代默认端口是9000;hadoop2.x时代默认端口是8020;
    hadoop3.x时代默认端口是9820 -->
    <property>
        <name>fs.defaultFS</name>
        <description>配置hdfs NameNode的地址,9820是RPC通信的端口</description>
    </property>

    <!-- hdfs的基础路径,被其他属性所依赖的一个基础路径 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/opt/module/hadoop-3.3.6/tmp</value>
        <description>hadoop的临时目录</description>
    </property>

    <!-- 设置 Web UI 为静态用户 -->
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>root</value>
    </property>
</configuration>

配置 hdfs-site.xml

vim $HADOOP_HOME/etc/hadoop/hdfs-site.xml

# 修改内容如下:
<configuration>
    <!--指定HDFS储存数据的副本数目,默认情况下为3份-->
    <property>
        <name>dfs.replication</name>
        <value>1</value>
        <description>配置hdfs副本数量</description>
    </property>

    <!-- secondarynamenode守护进程的http地址:主机名和端口号。参考守护进程布局 -->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>dolphin:9868</value>
        <description>配置secondarynamenode守护进程的http地址</description>
    </property>

    <!-- namenode web端访问地址 -->
    <property>
        <name>dfs.namenode.http-address</name>
        <value>dolphin:9870</value>
    </property>

    <!-- 表示本地磁盘目录,是存储 fs image 文件的地方 -->
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/opt/module/hadoop-3.3.6/hdfs/name</value>
    </property>

    <!-- 表示本地磁盘目录,HDSF数据存放block的的地方 -->
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/opt/module/hadoop-3.3.6/hdfs/data</value>
        <description>配置datanode节点存储block的目录位置</description>
    </property>
</configuration>

配置 mapred-site.xml

vim $HADOOP_HOME/etc/hadoop/mapred-site.xml

# 修改内容如下:
<configuration>
    <!-- 指定MR运行在yarn上 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>

    <!---指定MapReduce任务运行所需依赖jar -->
    <property>
        <name>mapreduce.application.classpath</name>
        <value>$HADOOP_HOME/share/hadoop/mapreduce/*:$HADOOP_HOME/share/hadoop/mapreduce/lib/*:$HADOOP_HOME/share/hadoop/common/*:$HADOOP_HOME/share/hadoop/common/lib/*</value>
    </property>
</configuration>

配置 yarn-site.xml

vim $HADOOP_HOME/etc/hadoop/yarn-site.xml

# 修改内容如下:
<configuration>
    <!-- 指定YARN的ResourceManager的地址 -->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>dolphin</value>
    </property>

    <!-- 指定reduce获取数据的方式 -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    
    <!-- 指定shuffle服务的类 -->
    <property>
        <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
    <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>
</configuration>

配置 workers

vim $HADOOP_HOME/etc/hadoop/workers

# 修改内容如下:(hosts中配置的dolphin名称)
dolphin

hadoopenvsh_510">配置 hadoop-env.sh

vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh

# 修改内容如下:
# 配置 JAVA_HOME 和 HADOOP_HOME 环境变量
export JAVA_HOME=/opt/module/jdk1.8.0_201
export HADOOP_HOME=/opt/module/hadoop-3.3.6

# Hadoop3中,需要添加如下配置,设置启动集群⻆⾊的⽤户是哪个。
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

格式化 HDFS

hdfs namenode -format

注意:

  • core-site.xml中配置的hadoop.tmp.dir的路径,在集群格式化的时候,必须保证不存在! 如果之前存在数据,先将它删除,再进行格式化!

启动 Hadoop

start-dfs.sh
start-yarn.sh

# 或

start-all.sh

验证 Hadoop 是否运行

jps

Hadoop 进程包括:

  • NameNode
  • DataNode
  • SecondaryNameNode
  • ResourceManager
  • NodeManager

Hadoop环境测试

参考Web UI

通过浏览器访问HDFS Web UI 界面 9870 端口和 YARN Web UI界面 8088 端口

在这里插入图片描述
在这里插入图片描述

测试 HDFS 和 Mapper Reduce

创建测试文件 hello.txt
cat > hello.txt << 'EOF'
hello world
hadoop hdfs
张三 李四 王五
hello hadoop
hello yarn
hello hdfs
hello spark
EOF

chown dolphin:dolphin /root/hello.txt
测试MR
# HDFS 中创建 input 文件夹并上传 hello.txt 文件
hadoop fs -mkdir /input
hadoop fs -put /root/hello.txt /input
hadoop fs -ls /input
hadoop fs -mkdir /output

# 运行 wordcount 程序
hadoop jar /opt/module/hadoop-3.3.6/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount /input /output

在这里插入图片描述

解决Hadoop在浏览器中Browse Directory,无法下载文件的问题

在这里插入图片描述

解决办法

把你Linux中的hosts文件中的映射数据,复制到Windows下的hosts

在这里插入图片描述

在这里插入图片描述

解决了

在这里插入图片描述


http://www.niftyadmin.cn/n/5860415.html

相关文章

元脑服务器可用于DeepSeek部署

元脑服务器系列&#xff0c;由浪潮电子信息产业股份有限公司研发并推出&#xff0c;旨在满足人工智能等高端应用领域对高性能计算的需求。以下内容将对元脑服务器进行详细阐述&#xff1a; 一、发展及定位 2024年4月17日&#xff0c;于浪潮信息生态伙伴大会上&#xff0c;“元脑…

【全栈】SprintBoot+vue3迷你商城-细节解析(1):Token、Jwt令牌、Redis、ThreadLocal变量

【全栈】SprintBootvue3迷你商城-细节解析&#xff08;1&#xff09;&#xff1a;Token、Jwt令牌、Redis、ThreadLocal变量 往期的文章都在这里啦&#xff0c;大家有兴趣可以看一下 后端部分&#xff1a; 【全栈】SprintBootvue3迷你商城&#xff08;1&#xff09; 【全栈】…

Python C API 深度解析与实战指南

本文聚焦于 Python C API&#xff0c;全面介绍其核心内容&#xff0c;包括基本概念、对象操作、类型系统、模块和导入机制、内存管理、线程安全等方面。通过深入剖析每个部分&#xff0c;结合详细的代码示例和图文讲解&#xff0c;帮助开发者掌握使用 Python C API 在 C 语言中…

定期自动统计大表执行情况

一、创建用户并赋权 create user dbtj identified by oracle default tablespace OGGTBS;grant connect,resource to dbtj;grant select any dictionary to dbtj;grant create job to dbtj;grant manage scheduler to dbtj; 二、创建存储表 1、连接到新建用户 conn dbtj/or…

风险价值VaR、CVaR与ES

风险价值VaR、CVaR与ES 一、VaR风险价值1. VaR的定义及基本概念2.VaR的主要性质3.风险价值的优缺点 二、CVaR条件风险价值与ES预期损失1.CVaR的基本概念2.性质3.ES预期损失 一、VaR风险价值 1. VaR的定义及基本概念 20年前&#xff0c;JP的大佬要每天下午收盘后的4:15在桌上看…

游戏引擎学习第114天

打开内容并回顾 目前正在讨论一个非常重要的话题——优化。当代码运行太慢&#xff0c;无法达到所需性能时&#xff0c;我们该怎么办。昨天&#xff0c;我们通过在代码中添加性能计数器&#xff0c;验证了一些性能分析的数据&#xff0c;这些计数器帮助我们了解每个操作需要的…

docker 改了镜像源为阿里云,还是下载失败

我是windows系统&#xff0c;在学习docker&#xff0c;刚开始执行docker run hello-world还是失败&#xff0c;然后改了镜像源为阿里云&#xff0c;还是失败&#xff0c;后来去查资料&#xff0c;除了阿里云还配置了很多其他镜像源&#xff0c;才好使 "registry-mirrors&q…

TOGAF之架构标准规范-信息系统架构 | 应用架构

TOGAF是工业级的企业架构标准规范&#xff0c;信息系统架构阶段是由数据架构阶段以及应用架构阶段构成&#xff0c;本文主要描述信息系统架构阶段中的应用架构阶段。 如上所示&#xff0c;信息系统架构&#xff08;Information Systems Architectures&#xff09;在TOGAF标准规…