文章目录
- 前言
- 一、环境
- 二、安装虚拟机及配置
- 配置网络
- 三、安装Ubuntu及配置
- 下载ISO镜像
- VMware安装Ubuntu
- Ubuntu配置:
- 配置结果IP
- 免密登录
- JAVA安装
- hadoop安装:
- 文件的作用
- core-site.xml:
- core-site.xml
- yarn-site.xml
- mapred-site.xml
- 修改配置:
- core-site.xml
- hdfs-site.xml
- yarn-site.xml
- mapred-site.xml
- hadoop-env.sh
- workers
- hdfs初始化:
- 启动 Hadoop
- 脚本启动:
- 命令方式启动:
- 启动
- 如果出现卷只有一个master:
- 测试:
- 总结
前言
Hadoop是一种开源框架,可用于处理大数据集。它基于Google的MapReduce算法和Google文件系统(GFS)的概念而来。Hadoop可在廉价硬件上运行,并能够提供高度可靠性和容错性。
Hadoop主要由两个核心组件组成:
- HDFS:Hadoop分布式文件系统,用于存储和管理大规模数据集;
- MapReduce:用于并行处理和生成大规模数据集的分布式算法框架。
除了这两个核心组件外,Hadoop还包括许多其他工具和应用程序,例如Pig、Hive等。
使用Hadoop进行大数据处理时,需要将数据划分为较小的块,然后将这些块分配给多台机器进行并行处理。每个机器都可以在本地对其分配的块执行MapReduce任务,并将结果上传到主节点进行聚合。整个过程非常复杂,但Hadoop能够自动完成这些工作,使用户只关注业务逻辑即可。
Hadoop最初由Apache基金会开发,现在已成为大数据领域的标准之一。
一、环境
软件及环境 | 版本 |
---|---|
VMware | 17 |
Ubuntu | 20.0.4 |
Hadoop | 3.3.5 |
二、安装虚拟机及配置
虚拟机下载网址:https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html
(安装过程略)
激活:
JU090-6039P-08409-8J0QH-2YR7F 或者 MC60H-DWHD5-H80U9-6V85M-8280D
安装好后界面:
配置网络
选择虚拟网络编辑器:
这里配置为192.168.200.0/24网段
网络给DHCP也可:
到这里我们的网络环境就配置好了,也可以在Ubuntu中配置固定的IP地址,这个我们放到后面。
三、安装Ubuntu及配置
下载ISO镜像
下载Ubuntu镜像文件(清华源):https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/
我们选择带桌面:
下载完成后为iso文件
VMware安装Ubuntu
新建虚拟机
这里我们自定义:
这里如果选择选项二VMware会自动给你简易安装Ubuntu,推荐向手动安装:
选择虚拟机保存位置注意要放在一个比较大的硬盘中:
存储可以按需设置,注意这里的硬盘是虚拟的硬盘并不会真的将硬盘拆分,VMware是用多少存储多少,并不会影响其他使用:
可以向我一样将虚拟机建个文件夹分类:
我们设置一个镜像文件:
网卡选择nat(可以出网):
其他配置按需,内存和cpu按照电脑配置更改注意内存至少2G,配置好后开机:
语言可以选择中文:
我们选择汉语拼音:
这里注意不要安装更新不然下载官方源非常慢:
这里是在虚拟环境对硬盘没有影响:
时区选择上海:
ip a 命令查看网卡是否有ip地址
ping baidu.com测试网络是否正常:
sudo passwd root#给root设置密码
su - #切换到root
apt-get update #更新软件源缓存
Ubuntu配置:
apt-get install vim -y # 安装一下vim,因为版本自带的vi有问题这个一直没有修复过
vim /etc/apt/sources.list #直接输入:200dd然后按i健将下面的url复制进去,复制完成后:wq保存退出
阿里源:
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
如果无法复制到vm虚拟机直接用内置火狐搜索阿里源即可复制进去:这个问题后面解决
apt-get upgrade #更新
apt-get install ssh -y # 安装ssh服务
vim /etc/ssh/sshd_config #按i健写入配置,:wq保存退出
systemctl enable ssh #加入开机启动
systemctl start ssh #启动ssh服务
systemctl restart ssh #重启ssh服务
可以看到我们的服务启动22端口:
我们使用ssh工具连接这里推荐FinalShell,也可以用其他的ssh工具如CRT
输入用户名密码和IP连接:
然后我们拍个快照(快照可以快速恢复环境):
快速克隆slave节点:
关机后操作:
选择完整克隆
按照一样的方法克隆slave2:
克隆完成后就有三台服务器了:
修改slave1和2的内存为2G:
修改slavel1的主机名:
sudo vim /etc/hostname
reboot #重启
slavel2一样操作
为了区别slavel的用户这里我们创建用户并删除原有的master用户:
使用slavel1登录:删除master用户
deluser master
slavel2相同操作
查看地址:
使用ssh工具连接:
配置结果IP
主机名 | IP |
---|---|
Master | 192.168.200.128 |
slave1 | 192.168.200.129 |
slave2 | 192.168.200.130 |
固定IP地址: | |
其他两台一样设置:
免密登录
- Hosts 是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的 IP 地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts 文件中寻找对应的 IP 地址,一旦找到,系统会立即打开对应网页,如果没有找到,则 系统会再将网址提交 DNS 域名解析服务器进行 IP 地址的解析。
- 为了机器能够快速识别自己以及其他机器,我们可以做一下域名和 IP 的 hosts 映射,这样在之后的操作中,我们就可以直接用域名来代替 IP 地址。
修改三台的hosts文件:
vim /etc/hosts
将以下内容键入:
192.168.200.128 master
192.168.200.129 slave1
192.168.200.130 slave2
注意slave12需要修改127.0.0.1:
修改配置后用命令重启网卡或者重启生效:
测试连通性:
配置免密登录(普通用户权限):生产环境尽量使用用户权限
生成公钥
ssh-keygen -t rsa#一直按回车
其他两台机器一样操作:
我们将公钥进行整合
master:
cp id_rsa.pub authorized_keys # 复制一个公钥
将其他两个公钥复制到此文件内:
将公钥分发给其他两台电脑或者将公钥复制过去:
其他两台:
测试:
免密登录成功
JAVA安装
https://adoptium.net/zh-CN/temurin/releases/?version=8
将java上传给master节点:
以下配置只在master上操作:
tar -zxvf OpenJDK8U-jdk_x64_linux_hotspot_8u372b07.tar.gz #解压
chmod 755 jdk8u372-b07/ -R #加个权限
vim /root/.bashrc #编辑系统环境变量
最后一行添加:
# JAVA
export JAVA_HOME=/opt/jdk8u372-b07
export PATH=${JAVA_HOME}/bin:$PATH
source /root/.bashrc #更新环境变量
hadoop安装:
官网下载:https://hadoop.apache.org/releases.html
点击下载最好使用迅雷:
这里使用master配置后用scp传输给其他两台:
上传hadoop上传到master的/opt
tar -zxvf hadoop-3.3.5.tar.gz #解压
配置环境变量:
vim /root/.bashrc #添加下面内容
cd /opt
chmod 755 hadoop-3.3.5 -R
# HADOOP
export HADOOP_HOME=/opt/hadoop-3.3.5
export PATH=${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH
source /root/.bashrc #更新环境变量
修改hadoop配置文件:
hadoop配置存在与/opt/hadoop-3.3.5/etc/hadoop/目录下:
文件的作用
core-site.xml:
- 是Hadoop的一个配置文件,用于配置Hadoop分布式系统中的核心参数。
- 此配置文件定义了Hadoop集群中所有节点共享的属性和变量,如文件系统名称(fs.default.name)、Hadoop运行环境的I/O设置(hadoop.tmp.dir)、RPC服务器的地址(hadoop.rpc.socket.factory.class.default)等。
- 同时,该配置文件还可以包含其他一些重要的属性和变量,比如数据块的大小、JobTracker和TaskTracker之间的通信端口等。通过修改core-site.xml文件,可以对Hadoop集群进行全局性的参数调整和优化。
core-site.xml
- 是Hadoop分布式系统中的一个配置文件,其主要作用是定义一个或多个全局属性和变量,以便在整个集群中使用。
- 定义文件系统:通过定义fs.defaultFS属性,可以指定Hadoop分布式文件系统的名称,默认情况下为hdfs://localhost:9000/。
- 配置Hadoop运行环境的I/O设置:可以通过指定hadoop.tmp.dir属性来定义Hadoop本地文件系统(LocalFileSystem)的临时目录。
- 包含其他重要参数:core-site.xml还包含了其他一些重要的属性和变量,如数据块的大小、JobTracker和TaskTracker之间的通信端口等。
- 配置安全性:通过设置hadoop.security.authentication属性可以启用Hadoop的安全功能。同时也可以使用SASL协议对Hadoop进行加密通信。
- 配置其他服务:core-site.xml还可以用于配置其他服务的连接信息,比如HBase和Hive。
yarn-site.xml
- 是Hadoop中的一个配置文件,用于配置YARN(Yet Another Resource Negotiator)资源管理器。该配置文件主要用于定义各种YARN服务和组件的配置参数和属性。
- 配置资源管理器:可以通过指定yarn.resourcemanager.address属性来设置ResourceManager的地址。此外,还可以通过属性yarn.resourcemanager.scheduler.class来设置使用哪种调度程序。
- 分配容器资源:yarn-site.xml也包含了多个与容器资源分配相关的参数,如yarn.scheduler.minimum-allocation-vcores、yarn.scheduler.maximum-allocation-mb等,这些参数用于控制YARN在执行应用程序时如何分配资源。
- 配置节点管理器:可以使用yarn.nodemanager.local-dirs属性设置本地目录,以存储节点管理器运行时使用的临时文件。
- 安全性配置:yarn-site.xml还包含了一些有关安全性的参数,如yarn.nodemanager.linux-container-executor.nonsecure-mode.limit-users属性,可以限制非特权用户运行任务的数量。
- 其他配置:除上述功能外,yarn-site.xml还包括其他一些配置,如NodeManager的最大重试次数、队列调度程序的特权级别和容忍度等。
mapred-site.xml
- 是Hadoop中的一个配置文件,用于配置MapReduce框架的一些参数和属性。MapReduce是Hadoop的一个核心组件,它主要用于处理大规模数据集的并行计算,提供了分布式计算的能力。
- 配置JobTracker:可以使用mapred.job.tracker属性指定JobTracker的地址。此外,还可以通过属性mapred.job.tracker.http.address来设置JobTracker Web UI的地址。
- 优化任务执行:mapred-site.xml包含了多个与任务执行相关的参数,如mapred.map.tasks、mapred.reduce.tasks等,这些参数用于控制MapReduce框架在执行任务时的并行度。
- 设置输入输出格式:可以通过属性mapreduce.inputformat.class来设置输入格式,通过属性mapreduce.outputformat.class来设置输出格式。
- 调整内存和磁盘限制:mapred-site.xml还包括一些与内存和磁盘限制相关的参数,如mapreduce.map.memory.mb、mapreduce.reduce.memory.mb等,这些参数用于调整MapReduce任务在执行时所能使用的内存和磁盘资源。
- 安全性配置:mapred-site.xml还包含了一些有关安全性的参数,如mapreduce.job.credentials.binary和mapreduce.job.acl-view-job等,这些参数用于对MapReduce作业的访问进行限制和管理。
修改配置:
core-site.xml
cd /opt/hadoop-3.3.5/etc/hadoop #进入目录
vim core-site.xml #修改
<configuration>
<property>
<name>fs.defaultFS</name>
#这里可以修改为hdfs://master:9000
<value>hdfs://192.168.200.128:9000</value>
</property>
# 配置hadoop运行时产生数据的存储目录,不是临时目录
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop-3.3.5/tmp</value>
</property>
</configuration>
保存退出:
hdfs-site.xml
vim hdfs-site.xml
修改以下配置:
<configuration>
# 配置在hdfs中,一份文件存几份,默认是3份,一台机器只能存一份,小于datanode数量
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
# 是否打开权限检查系统
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
# 命名空间和事务在本地文件系统永久存储的路径
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/hadoop-3.3.5/data/namenode</value>
</property>
# DataNode在本地文件系统中存放块的路径
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/hadoop-3.3.5/data/datanode</value>
</property>
</configuration>
修改完配置后需要创建以下文件夹用于数据存放:
mkdir -p /opt/hadoop-3.3.5/data/namenode
mkdir -p /opt/hadoop-3.3.5/data/datanode
mkdir -p /opt/hadoop-3.3.5/tmp
yarn-site.xml
vim yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
# 指定yarn的resourcemanager的地址(该地址是resourcemanager的主机地址
,即主机名或该主机的ip地址
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
# 指定mapreduce执行shuffle时获取数据的方式
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
mapred-site.xml
vim mapred-site.xml
<configuration>
# 指定mapreduce运行在yarn上
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=/opt/hadoop-3.3.5</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=/opt/hadoop-3.3.5</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=/opt/hadoop-3.3.5</value>
</property>
</configuration>
hadoop-env.sh
在任意地方添加 JAVA_HOME和系统运行环境:
vim hadoop-env.sh
export JAVA_HOME=/home/hadoop/jdk8u362-b09
export JAVA_HOME=/opt/jdk8u372-b07
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
workers
vim workers
master
slave1
slave2
配置完成后将hadoop和java发送给slave1和2:
scp /opt/hadoop-3.3.5 slave1:/opt
scp /opt/hadoop-3.3.5 slave2:/opt
scp /opt/jdk8u372-b07 slave1:/opt
scp /opt/jdk8u372-b07 slave2:/opt
scp /root/.bashrc slave1:/root/
scp /root/.bashrc slave2:/root/
在slave1和2执行:
source /root/.bashrc
使用java -version查看是否配置成功
hdfs初始化:
三台执行:
hdfs namenode -format
如果初始化失败,需要用下面的命令手动清空 namenode 和 datanode 文件夹,调整配置后,重新初始化
启动 Hadoop
脚本启动:
脚本位置为:/opt/hadoop-3.3.5/sbin
./start-all.sh #启动所有进程
./start-dfs.sh #启动hdfs进程
./start-yarn.sh #启动yarn进程
./stop-all.sh #关闭所有进程
./stop-dfs.sh #关闭hdfs进程
./stop-yarn.sh #关闭yarn进程
命令方式启动:
Namenode:
hdfs --daemon start namenode
hdfs --daemon stop namenode
hdfs --daemon restart namenode
Datanode:
hdfs --daemon start datanode
hdfs --daemon stop datanode
hdfs --daemon restart datanode
ResourceManager:
yarn --daemon start resourcemanager
yarn --daemon stop resourcemanager
yarn --daemon restart resourcemanager
NodeManager:
yarn --daemon start nodemanager
yarn --daemon stop nodemanager
yarn --daemon restart nodemanager
启动
./start-all.sh
启动完毕后可以使用 jps 命令查看启动的 hadoop 进程
可以访问 http://192.168.200.128:9870或http://master:9870 ,查看 HDFS 运行情况
可以访问http://192.168.200.128:8088或 http://master:8088 查看所有 Yarn 任务的运行情况
如果出现卷只有一个master:
修改hosts文件:将127.0.0.1 master注释掉,重启即可
测试:
cd /opt/hadoop-3.3.5/share/hadoop/mapreduce #进入mapreduce目录
hadoop jar hadoop-mapreduce-examples-*.jar pi 10 10#我们可以使用一个简单的例子来测试一下 hadoop 是否能够正常运行我们从 hadoop 安装文件夹,启动一个终端,使用下面的命令,计算 pi 值。
到这里我们的hadoop就能正常使用了
总结
安装到这里就结束了,这里用的root用户安装的,在生产环境中建议使用普通用户进行安装,总结以下步骤
在安装Hadoop之后,需要完成以下几个步骤才能开始使用:
-
配置环境变量
将Hadoop的bin和sbin目录加入PATH环境变量中,以便直接使用Hadoop命令。 -
修改配置文件
根据实际情况修改Hadoop的配置文件,特别是core-site.xml、hdfs-site.xml、mapred-site.xml和yarn-site.xml等。 -
格式化HDFS
在第一次启动Hadoop之前,需要格式化HDFS来创建默认的目录结构。 -
启动Hadoop
使用start-all.sh脚本或手动启动各个组件的进程,开始运行Hadoop集群。 -
测试Hadoop
可以使用Hadoop自带的示例程序,如WordCount和PiEstimator等,来测试Hadoop集群是否正确运行。
总的来说,在安装和配置Hadoop之后,需要对其进行一些基础设置和测试,以确保其正常运行。如果出现问题,需要逐一排查相关的错误,并及时解决。