一、本地模式搭建:
注意:前面有 # 的代表注解,可以不写
1. 个人习惯创:在家目录下建两个目录: modules (用来存放文件),software (用来存放压缩包).
命令:
[xcj@node01 ~]$ mkdir software
[xcj@node01 ~]$ mkdir modules
2. 将jdk与hadoop的压缩包放入下载到software目录下
-rw-rw-r--. 1 xcj xcj 456364743 5月 15 14:16 hadoop-3.3.0-Centos7-64-with-snappy.tar.gz
-rw-rw-r--. 1 xcj xcj 195013152 5月 15 14:11 jdk-8u212-linux-x64.tar.gz
3. 解压hadoop与jdk压缩包
命令:
#将hadoop解压到modules目录
[xcj@node01 ~]$ tar -xzvf ~/software/hadoop-3.3.0-Centos7-64-with-snappy.tar.gz -C ~/modules/
#将hadoop解压到jdk目录
[xcj@node01 ~]$ tar -xzvf ~/software/jdk-8u212-linux-x64.tar.gz -C ~/modules/
4. 配置环境
有两种配置方式:系统环境与用户环境,两种环境就配置的文件不一样,方式都是一样的.
系统环境: 所有用户都可以使用
用户环境: 就当前用户可用
命令:
#系统环境配置命令
vim /etc/profile
#用户环境命令
vim ~/.bashrc
#系统环境与用户环境选择一个即可,两人都配也没关系,当然如果两个都配,不如就配系统环境
#进入文件后,将下面的代码添加到文件的最后
#java环境
#注意每个人的目录与jdk版本可能不一样,注意看
#export JAVA_HOME=jdk存放的目录路径/jdk的文件名称
export JAVA_HOME=/home/xcj/modules/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin
#hadoop环境
#注意每个人的目录与jdk版本可能不一样,注意看
#export HADOPP_HOME=hadoop存放的目录路径/hadoop的文件名称
export HADOOP_HOME=/home/xcj/modules/hadoop-3.3.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
5. 检验环境是否配置成功
命令:
[xcj@node01 ~]$ java -version
#出现以下信息,代表jdk环境配置成功
java version "1.8.0_212"
Java(TM) SE Runtime Environment (build 1.8.0_212-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.212-b10, mixed mode)
[xcj@node01 ~]$ hadoop version
#出现以下信息,代表hadoop配置成功,每个人的以下信息可能有所差异,但是肯定有版本号
Hadoop 3.3.0
Source code repository Unknown -r Unknown
Compiled by root on 2021-07-15T07:35Z
Compiled with protoc 3.7.1
From source with checksum 5dc29b802d6ccd77b262ef9d04d19c4
This command was run using /home/xcj/modules/hadoop-3.3.0/share/hadoop/common/hadoop-common-3.3.0.jar
到这里hadoop的本地模式就完成了.
下面我们可以用一个案例来测试一下,这里家目录下创建一个文件,名称为testfile/input
命令:
#创建目录
mkdir -r ~/testfile/
#创建文件
touch ~/testfile/input
vim ~/testfile/input
#在文件添加到以下内容,内容随便
hello python
hello java
hello c
hello world
#保存,退出
:wq
#现在到hadoop的mapreduce目录下
cd ~/modules/hadoop-3.3.0/share/hadoop/mapreduce/
#执行下面代码,注意output目录是输出目录,且不能提前存在,他会自动创建
hadoop jar hadoop-mapreduce-examples-3.3.0.jar wordcount ~/testfile/input ~/testfile/output/
#到testfile目录下看看是否存在output目录,如果存在进到output目录
cd ~/testfile/output/
ll
#会看到,_SUCCESS 是成功标识
总用量 4
-rw-r--r--. 1 xcj xcj 36 5月 15 15:11 part-r-00000
-rw-r--r--. 1 xcj xcj 0 5月 15 15:11 _SUCCESS
#输入以下命令
cat part-r-00000
#会有
c 1
hello 4
java 1
python 1
world 1
如果案例成功了,代表你已经入门一点点了,加油!
二、伪分布式(一个节点表示一个集群,但是有分布式的概念。所有的角色都由当前节点充当 )
伪分布式与本地模式不同的是伪分布式需要配置一些配置文件
1. 在配置文件之前我们先,对本节点做一个映射
#切换root用户,输入这个命令
vim /etc/hosts
#在最后添加以下内容: ip地址 节点名称
192.168.88.151 node01
#修改本机名称,root权限
vim /etc/hostname
#在最后添加以下内容
node01
设置免密登陆,不设置后面有的进程不会开启,这也是有的hadoop会少进程的原因之一
#node1生成公钥私钥 (一路回车)
ssh-keygen
#node1配置免密登录到node1 node2 node3
ssh-copy-id node1
2. 修改配置文件,通常修改core,hdfs,mapred,yarn -site.xml文件
注意:每个人的文件目录可能不一样
core-site.xml
命令: vim core-site.xml
<configuration>
<!-- hdfs的集群访问路径 -->
<property>
<name>fs.default.name</name>
<value>hdfs://node01:9820</value>
</property>
<!-- 执行MapReduce时产生的临时文件所在目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/xcj/modules/hadoop-3.3.0/tmp</value>
</property></configuration>
hdfs-site.xml
命令: vim hdfs-site.xml
<configuration>
<!-- hdfs的浏览器访问地址 -->
<property>
<name>dfs.namenode.http-address</name>
<value>node01:9870</value>
</property>
<!-- hdfs中secondaryNameNode的访问地址 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node01:9868</value>
</property>
<!-- 设置副本数,默认是3,因为伪分布式只有一个节点,副本数不能大于节点数 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!-- 设置NameNode在相应节点上的数据存放路径 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/xcj/modules/hadoop-3.3.0/dfs/name</value>
</property>
<!-- 设置DataNode在相应节点上的数据存放路径 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/xcj/modules/hadoop-3.3.0/dfs/data</value>
</property>
<!-- 设置SecondaryNameNode在相应节点上的数据存放路径 -->
<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>/home/xcj/modules/hadoop-3.3.0/dfs/secondaryName</value>
</property></configuration>
mapred-site.xml
命令: vim mapred-site.xml
<configuration>
<!--资源调度的方式-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property></configuration>
yarn-site.xml
命令: vim yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定ResourceManager所在节点 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node01</value>
</property></configuration>
hadoop-env.sh
命令: vim hadoop-env.sh
提示:大概在54行的位置
#打开原 hadoop-env.sh 文件,修改 JAVA_HOME
#默认是${JAVA_HOME},读取可能会出问题,直接改成绝对路径
export JAVA_HOME=/home/bduser/modules/jdk1.8
workers
命令: vim workers
#DataNode和nodemanage 所在的节点
node01
3. 格式化
#建议使用hdfs命令
hdfs namenode -format
#hadoop和hdfs效果完全等价
hadoop namenode -format
#回到hadoop根目录下,查看有没有dfs目录,查看格式化后的数据存放目录
ll dfs
#会看到有一个name目录
注:格式化后只出现 name 目录,启动服务后才会出现 data 和 secondaryName 目录
4. 启动/改变相应的服务
#启动/关闭所有服务
start-all.sh
srop-all.sh
#单独启动/关闭hdfs和yarn的服务
start-dfs.sh
start-yarn.sh
stop-dfs.sh
stop-yarn.sh
#单独启动/关闭hdfs中的某一个服务
hadoop-daemon.sh start namenode
hadoop-daemon.sh start datanode
hadoop-daemon.sh start secondarynamenode
hadoop-daemon.sh stop namenode
hadoop-daemon.sh stop datanode
hadoop-daemon.sh stop secondarynamenode
#单独启动/关闭yarn中的某一个服务
yarn-daemon.sh start resourcemanager
yarn-daemon.sh start nodemanagercd
yarn-daemon.sh stop resourcemanager
yarn-daemon.sh stop nodemanagercd
#查看服务是否启动成功
jps
#如果用的start-all.sh这个命令启动一个有以下服务,则说明配置成功
[xcj@node01 hadoop-3.3.0]$ jps
115985 DataNode
116497 SecondaryNameNode
117285 ResourceManager
117956 Jps
117510 NodeManager
115757 NameNode
然后进入两个官网,网址为
ip: 端口号
ip地址:8080 或使用映射别名 nod01:8080
ip地址:9870 或使用映射别名 nod01:9870
注意:在本机上使用别名,要到Windows系统中配置映射关系,修改hosts文件
文件路径:C:\Windows\System32\drivers\etc\hosts
在文件中添加: ip地址 别名