搭建 Hadoop 3.3.6 伪分布式

搭建 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 进入终端。

2. 创建 hadoop 用户

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

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

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

echo "hadoop:your_password" | sudo chpasswd
4. 配置 sudo 权限
方法 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.loguser=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/sbinexport 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

配置 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
EOFchown 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.rhkb.cn/news/23129.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python电影数据分析及可视化系统建设

博主介绍&#xff1a;✌程序猿徐师兄、8年大厂程序员经历。全网粉丝15w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

手机壁纸设计中,金属质感字体可以为壁纸增添独特的视觉效果和高端感

在手机壁纸设计中&#xff0c;金属质感字体可以为壁纸增添独特的视觉效果和高端感。以下是一些关于金属质感字体在手机壁纸设计中的应用建议和案例分析&#xff1a; 1. 金属质感字体的特点 视觉冲击力强&#xff1a;金属质感字体具有独特的光泽和质感&#xff0c;能够在视觉上…

使用ezuikit-js封装一个对接摄像头的组件

ezuikit-js 是一个基于 JavaScript 的视频播放库&#xff0c;主要用于在网页中嵌入实时视频流播放功能。它通常用于与支持 RTSP、RTMP、HLS 等协议的摄像头或视频流服务器进行交互&#xff0c;提供流畅的视频播放体验。 主要功能 多协议支持&#xff1a;支持 RTSP、RTMP、HLS …

PHP post 数据丢失问题

max_input_vars是PHP配置选项之一&#xff0c;用于设置一个请求中允许的最大输入变量数。它指定了在处理POST请求或者通过URL传递的参数时&#xff0c;PHP脚本能够接收和处理的最大变量数量。 max_input_vars的默认值是1000&#xff0c;意味着一个请求中最多可以包含1000个输入…

jenkins docker容器中安装python3.9环境

在运维过程中&#xff0c;不过避免的需要使用到python&#xff0c;在jenkins 的docker容器中&#xff0c;是没有python环境的&#xff0c;需要我们自己手动安装一下。 查看是否有工具apt-get 直接输入apt-get 然后回车&#xff0c;出现以下内容&#xff0c;表示支持apt-get命令…

《Spring实战》(第6版) 保护Spring

第1部分 Spring基础 第4章 使用非关系型数据 关系型数据库一直是首选&#xff0c;近年来"NoSQL"数据库提供了数据存储的不同概念和结构。 SpringData为很多NoSQL数据库提供了支持&#xff0c;包括MongoDB、Cassandra、Couchbase、Neo4j、Redis等&#xff0c;无论选…

SQLMesh 系列教程7- 详解 seed 模型

SQLMesh 是一个强大的数据建模和管道管理工具&#xff0c;允许用户通过 SQL 语句定义数据模型并进行版本控制。Seed 模型是 SQLMesh 中的一种特殊模型&#xff0c;主要用于初始化和填充基础数据集。它通常包含静态数据&#xff0c;如参考数据和配置数据&#xff0c;旨在为后续的…

【JavaEE】-- 多线程(初阶)2

文章目录 3.线程的状态3.1观察线程的所有状态3.2线程状态和状态转移的意义 4.多线程带来的的风险-线程安全 (重点)4.1观察线程不安全4.2 线程不安全的原因4.2.1 线程调度是随机的4.2.2 修改共享数据4.2.3 原子性4.2.4 内存可见性4.2.5 指令重排序 4.3解决之前的线程不安全问题 …

安卓系统远程控制电脑方法,手机远控教程,ToDesk工具

不知道大家有没有觉得手机、平板虽然很好用&#xff0c;却也仍存在有很多替代不了电脑的地方。就比如说撰写文档、做数据报表啥的就不如PC端操作般方便&#xff0c;就跟别说PS修图、AE视频剪辑等需高性能设备来带动才易用的了。 好在也是有对策可解决&#xff0c;装个ToDesk远程…

机器学习(李宏毅)——RL(强化学习)

一、前言 本文章作为学习2023年《李宏毅机器学习课程》的笔记&#xff0c;感谢台湾大学李宏毅教授的课程&#xff0c;respect&#xff01;&#xff01;&#xff01; 二、大纲 What is RL&#xff1f;Three steps in MLPolicy GradientActor-CriticReward Shaping 三、What …

【Go】Go wire 依赖注入

1. wire 简介 wire 是一个 Golang 的依赖注入框架&#xff08;类比 Spring 框架提供的依赖注入功能&#xff09; ⭐ 官方文档&#xff1a;https://github.com/google/wire 这里关乎到编程世界当中一条好用的设计原则&#xff1a;A用到了B&#xff0c;那么B一定是通过依赖注入的…

《动手学机器人学》笔记

目录 0.介绍1.概述&#xff5c;空间位置、姿态的描述&#xff08;33&#xff09;&#xff5c;《动手学机器人学》2.&#xff08;2&#xff09;-Robotics Toolbox①&#xff08;V10.4&#xff09;3.齐次坐标与变换矩阵4.一般形式的旋转变换矩阵5.&#xff08;轴角法&#xff09;…

【蓝桥杯单片机】第十三届省赛第二场

一、真题 二、模块构建 1.编写初始化函数(init.c) void Cls_Peripheral(void); 关闭led led对应的锁存器由Y4C控制关闭蜂鸣器和继电器 2.编写LED函数&#xff08;led.c&#xff09; void Led_Disp(unsigned char ucLed); 将ucLed取反的值赋给P0 开启锁存器 关闭锁存…

大语言模型基础

简介 AI大模型是“人工智能预训练大模型”的简称&#xff0c;包含了“预训练”和“大模型”两层含义&#xff0c;二者结合产生了一种新的人工智能模式&#xff0c;即模型在大规模数据集上完成了预训练后无需微调&#xff0c;或仅需要少量数据的微调&#xff0c;就能直接支撑各…

java Web

1.JavaWeb开发 前面的学习javase开发&#xff0c;而javaweb开发需要服务器和网页。 具备: java mysql jdbc htmlcssjs。 web服务器: tomcat服务器. 部署项目。 https://tomcat.apache.org/download-80.cgi 解压软件压缩包即可 不要放在中文目录和特殊符号的目录下 启动tomcat服…

SOME/IP--协议英文原文讲解12(完结)

前言 SOME/IP协议越来越多的用于汽车电子行业中&#xff0c;关于协议详细完全的中文资料却没有&#xff0c;所以我将结合工作经验并对照英文原版协议做一系列的文章。基本分三大块&#xff1a; 1. SOME/IP协议讲解 2. SOME/IP-SD协议讲解 3. python/C举例调试讲解 4.3 Compa…

光明谷推出AT指令版本的蓝牙音箱SOC 开启便捷智能音频开发新体验

前言 在蓝牙音箱市场竞争日益激烈的当下&#xff0c;开发一款性能卓越且易于上手的蓝牙音箱&#xff0c;成为众多厂商追求的目标。而光明谷科技有限公司推出的 AT 指令版本的蓝牙音箱 SOC&#xff0c;无疑为行业带来了全新的解决方案&#xff0c;以其诸多独特卖点&#xff0c;迅…

STM32——HAL库开发笔记22(定时器3—呼吸灯实验)(参考来源:b站铁头山羊)

本文利用前几节所学知识来实现一个呼吸灯实验&#xff1a;两颗led灯交替呼吸。 一、STM32CubeMX配置 step1&#xff1a;配置调试接口 step2&#xff1a;配置定时器 定时器1位于APB2总线上&#xff0c;如上图所示。 step3&#xff1a;配置时基单元 按照下图配置 时钟来源配置…

医疗AI领域中GPU集群训练的关键技术与实践经验探究(下)

五、医疗 AI 中 GPU 集群架构设计 5.1 混合架构设计 5.1.1 参数服务器与 AllReduce 融合 在医疗 AI 的 GPU 集群训练中,混合架构设计将参数服务器(Parameter Server)与 AllReduce 相结合,能够充分发挥两者的优势,提升训练效率和模型性能。这种融合架构的设计核心在于根…

修改Ubuntu系统用户密码(root密码)的方法

本文介绍在Linux系统的Ubuntu电脑中&#xff0c;修改账户用户密码&#xff08;同时也修改了root用户密码&#xff09;的方法。 首先&#xff0c;如果此时处于登录页面&#xff08;也就是意识到自己忘记密码的那个页面&#xff09;&#xff0c;就先点击右上角的关闭按钮&#xf…