文章目录

  • 前期准备
  • 一、centos9、hadoop和jdk的安装(安装配置好一台后完整克隆)
  • 二、环境配置
  • 三.测试
  • 总结


前期准备

centos9镜像 地址:https://centos.org/download/
jdk1.8.0* 地址:https://www.oracle.com/java/technologies/downloads/
hadoop-3.4.3 地址:https://hadoop.apache.org/

一、centos9、hadoop和jdk的安装(安装配置好一台后完整克隆)

1.1 Centos9安装
Centos9安装,在刚进入系统时按上下键选择第一个然后按tab输入net.ifnames=0 biosdevname=0敲回车,磁盘分区可自动也可自己分区,软件选择(server with gui):Legacy Unix ,Developmet Tools,Graphica Adimnistration Toos,Rpm Developmet Tools.
1.2 Hadoop安装
去hadoop官网下载
(https://hadoop.apache.org/,进入官网选择download,页面最上边有3.4.3,选择source下载)
打开centos9的终端(su+密码可以进入root),创建目录

mkdir /root/hadoop/server(这里不一定是/root/hadoop/server,可以再任何目录下创建)
hadoop包解压在/root/hadoop/server(进入目录cd /root/hadoop/server,后缀为gz的包用tar -zxvf +包名,为rpm的包用 rpm -ivh+包名,包名可以通过左上角活动,文件拖进终端)
tar -zxvf /root/hadoop-3.4.3-src.tar.gz

ll查看当前文件,发现有hadoop-3.4.3的文件,可以用cp 或者mv 命令进行修改,cp -r Hadoop-3.4.3 Hadoop,ll查看当前文件,文件有hadoop-3.4.3和hadoop(此时怕进错的同学可以rm -rf Hadoop-3.4.3将此文件移除,我是为了防止出错和方便记名所以复制的文件,可以直接mv或者不做任何改动文件名就是hadoop-3.4.3)

1.3 Jdk安装

去jdk 官网下载(https://www.oracle.com/java/technologies/downloads/,往下翻可以找到Java SE Development Kit 8u**的字样,rpm包和tar包都可以)

Jdk安装与上述基本一致,因为centos9自带jdk-11-openjdk的包,但是与hadoop3.4.3不兼容所以需要下载jdk-1.8.*的包然后将包解压到/root/Hadoop/server(最好与hadoop的文件位置一致方便记忆,也可cp -r jdk1.8.0_351 jdk1.8.0,也可不做直接用jdk1.8.0_351命名的文件),ll查看当前文件,cp过的用cd jdk1.8.0(未cp的用cd jdk1.8.0_351 )将这层文件为gz和jar的包全部解压(gz包tar -zxvf ,jar包 jar -xvf),cd jre、cd java、cd lib分别进入解压三个文件中的包。cd …退一层在cd bin启动java,做完一切后java -version查看版本号

1.4 主机ip(在hadoop1配置完成后克隆即可,完整克隆ip是会分配的)

hadoopyum镜像网站 hadoop国内镜像_vim

二、环境配置

  1. 主机设置(可以在完整配置一台后,克隆完整虚拟机)
    主机名可以使用su进入root后再终端输入nmtui按上下键选择设置主机名也可以终端输入hostnamectl set-hostname hadoop1(可以是node1,one),克隆后的虚拟机名为hadoop2,hadoop3。在配置完所有文件后克隆完整虚拟机后。添加克隆好的虚拟机名和ip(ifconfig查看ip地址)在vim /etc/hosts添加对应的地址
    192.168.144.133 hadoop1
    192.168.144.141 hadoop2
    192.168.144.142 hadoop3
关闭防火墙 :
systemctl stop firewalld.service 停止防火墙
systemctl disable firewalld.service 关闭开机自启
  1. ssh免密登录(在完整配置一台后,克隆完整虚拟机后执行):
ssh-keygen 一直敲回车(有判断yes/no 输入yes)
ssh-copy-id hadoop1
ssh-copy-id hadoop2
ssh-copy-id hadoop3

4.创建目录:

mkdir -p /root/hadoop/server
mkdir -p /home/hadoop/tmp
mkdir -p /home/hadoop/var
mkdir -p /home/hadoop/dfs
mkdir -p /home/hadoop/dfs/name
mkdir -p /home/hadoop/dfs/data

5.安装hadoop
在开头以做了解释这里就不解释了。配置/etc/profile文件

vim /etc/profile  打开此文件,末尾添加
JAVA_HOME= /root/hadoop/server/jdk1.8.0 
#(这就是为什么和hadoop解压在同一目录的原因,这里可以是/home/hadoop等,自己解压的文件目录,其他直接复制就好)
PATH=$GRADLE_HOME/bin:$JAVA_HOME/bin:$NODE_HOME/bin:$NODE_HOME1/bin:$PATH
CLASSPATH=.:$JAVA_HOME/jre/lib/ext:$JAVA_HOME/jre/lib/ext/jar:$JAVA_HOME/lib/tools.jar
export PATH JAVA_HOME CLASSPATH
export HADOOP_HOME= /root/hadoop/server/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

配置好后按Esc shift :wq保存退出

source /etc/profile  执行文件生效
hadoop version  查看版本

6.修改配置文件

/root/hadoop/server/hadoop/etc/hadoop(这个路径是解压后hadoop-3.4.3的etc地下的hadoop,直接复制命令cd /root/hadoop/server/hadoop/etc/hadoop进入,在代码后面为用#标注的直接复制,带#的多留意一下)

hadoopyum镜像网站 hadoop国内镜像_大数据_02

(1) vim core-site.xml

<configuration>
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://192.168.144.133:9000</value>  <!--这里网络上基本都是8020会报错如果没有报错就正常8020端口,报错了就改为9000端口,也可以是hadoop1:9000, 写自己ip -->
</property>
<!-- 设置Hadoop本地保存数据路径 -->
<property>
    <name>hadoop.tmp.dir</name>
    <value>/root/hadoop/server/hadoop</value>  <!--这里是解压的hadoop3.4.3的路径-->
</property>
<!-- 设置HDFS web UI用户身份 -->
<property>
    <name>hadoop.http.staticuser.user</name>
    <value>root</value>
</property>
<!-- 整合hive 用户代理设置 -->
<property>
    <name>hadoop.proxyuser.root.hosts</name>
    <value>*</value>
</property>
<property>
    <name>hadoop.proxyuser.root.groups</name>
    <value>*</value>
</property>
<!-- 文件系统垃圾桶保存时间 -->
<property>
    <name>fs.trash.interval</name>
    <value>1440</value>
</property>
</configuration>

(2) vim hdfs-site.xml

<configuration>
<!-- 设置SNN进程运行机器位置信息 -->
<property>
   <name>dfs.name.dir</name>
   <value>/export/hadoop/dfs/name</value>  <!--之前2.4创造目录时建了-->
   <description>Path on the local filesystem where theNameNode stores the namespace and transactions logs persistently.</description>
</property>
<property>
   <name>dfs.data.dir</name>
   <value>/export/hadoop/dfs/data</value>  <!--之前2.4创造目录时建了-->
   <description>Comma separated list of paths on the localfilesystem of a DataNode where it should store its blocks.</description>
</property>
<!-- 指定Hadoop辅助名称节点主机配置 -->
<property>
   <name>dfs.namenode.secondary.http-address</name>
   <value>hadoop2:50090</value>  <!--根据自己改的主机名-->
</property>
 <property>
    <name>dfs.namenode.servicerpc-address</name>
    <value>hadoop1:8022</value>  <!--根据自己改的主机名-->
  </property>
  <property>
    <name>dfs.https.address</name>
    <value>hadoop1:50470</value>  <!--根据自己改的主机名-->
  </property>
  <property>
    <name>dfs.https.port</name>
    <value>50470</value>
  </property>
<!-- 配置namenode的web界面-->
<property>
   <name>dfs.namenode.http-address</name>
   <value>192.168.144.133:50070</value>  <!--写自己ip或者hadoop1:50070 -->
</property>
<property>
   <name>dfs.replication</name>
   <value>2</value>
</property>
</configuration>

(3) vim yarn-site.xml

<configuration>
<!-- Site specific YARN configuration properties -->
<!-- 设置YARN集群主角色运行机器位置 -->
<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>hadoop1</value>  <--写自己的主机节点-->
</property>
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
<!-- 是否将对容器实施物理内存限制 -->
<property>
    <name>yarn.nodemanager.pmem-check-enabled</name>
    <value>false</value>
</property>
<!-- 是否将对容器实施虚拟内存限制。 -->
<property>
    <name>yarn.nodemanager.vmem-check-enabled</name>
    <value>false</value>
</property>
<!-- 开启日志聚集 -->
<property>
  <name>yarn.log-aggregation-enable</name>
  <value>true</value>
</property>
<!-- 设置yarn历史服务器地址 -->
<property>
    <name>yarn.log.server.url</name>
    <value>http://hadoop1:19888/jobhistory/logs</value>  <!--写自己的主机节点-->
</property>
<!-- 历史日志保存的时间 7天 -->
<property>
  <name>yarn.log-aggregation.retain-seconds</name>
  <value>604800</value>
</property>
<!--每个磁盘的磁盘利用率百分比-->
<property>
    <name>yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage</name>
    <value>95.0</value>
 </property>
 <!--集群内存-->
 <property>
    <name>yarn.nodemanager.resource.memory-mb</name>
    <value>2048</value>
</property>
 <!--调度程序最小值-分配-->
<property>
   <name>yarn.scheduler.minimum-allocation-mb</name>
   <value>2048</value>
</property>
 <!--比率,具体是啥比率还没查...-->
<property>
    <name>yarn.nodemanager.vmem-pmem-ratio</name>
    <value>2.1</value>
</property>
<!-- Site specific YARN configuration properties -->
</configuration>

(4) vim mapred-site.xml

<configuration>
<!-- 设置MR程序默认运行模式: yarn集群模式 local本地模式 ->
<property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
</property>
<!-- MR程序历史服务地址 -->
<property>
  <name>mapreduce.jobhistory.address</name>
  <value>hadoop1:10020</value>   <!--写自己的主机节点-->
</property>
<!-- MR程序历史服务器web端地址 -->
<property>
  <name>mapreduce.jobhistory.webapp.address</name>
  <value>hadoop1:19888</value>   <!--写自己的主机节点-->
</property>
<property>
  <name>yarn.app.mapreduce.am.env</name>
  <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
  <name>mapreduce.map.env</name>
  <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.application.classpath</name>
<value>$HADOOP_HOME/share/hadoop/mapreduce/*:$HADOOP_HOME/share/hadoop/mapreduce/lib-examples/*</value>
</property>
</configuration>

(5) vim #(文件最后面添加)

export JAVA_HOME=/root/hadoop/server/jdk1.8.0

(6) vim /root/hadoop/server/hadoop/etc/hadoop/ workers
在这个文件下添加三个主机节点的ip也可以是hadoop1,hadoop2,hadoop3(在hadoop1配置完成克隆后添加,打开三台虚拟机ifconfig查看ip,nmtui改主机名或者hostnamectl set-hostname hadoop1)

hadoop1
hadoop2
hadoop3
或者三台主机IP

(7) vim 和vim 添加(路径cd /root/hadoop/server/hadoop/sbin,在文件开头添加):

HDFS_NAMENODE_USER=root
HDFS_DATANODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
YARN_RESOURCEMANAGER_USER=root
YARN_NODEMANAGER_USER=root

vim 和 vim 添加(路径cd /root/Hadoop/server/Hadoop/sbin,在文件开头添加):

RN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
YARN_RESOURCEMANAGER_USER=root

(8) 启动集群
克隆完成后三台机器均执行格式化命令

cd /root/hadoop/server/hadoop/bin进入bin
执行 hdfs namenode -format
cd /root/hadoop/server/hadoop/sbin
执行./
一个集群只有一个Namenode
只在hadoop1执行hdfs --daemon start namenode
其他节点执行:
启动Datanode和secondarynamenode
hdfs --daemon start datanode
hdfs --daemon start secondarynamenode
jps查看启动节点状态

三.测试

3.1 wordcount示例运行

cd /root/hadoop/server/hadoop/share/hadoop/mapreduce  进入此目录下
mkdir test
创建好test后cd test 进入此文件
vim test
输入一些单词:
例如:
etc hadoop hello 
cat ls df h
du h free h 
linux ps ef
grep java ps
aux gerp
hadoop type enable yum install  
输入完成后按Esc shift : wq保存退出

3.2 使用hdfs的命令创建好输入文件的目录并将file放入输入目录

hdfs dfs -ls /    查看hdfs根目录下文件和目录
hdfs dfs -mkdir /test 在hdfs的根目录下新建test目录
hdfs dfs -put test.txt /test    把本地文件上传到hdfs的test
hadoop jar hadoop-mapreduce-examples-3.3.4.jar wordcount /test/test.txt output/    回到mapreduce目录下
完成之后输入 
hdfs dfs -ls /user/root/output    查看输出文件

在windows浏览器最上边输入http://192.168.144.133:50070/,进入hadoop页面后点击Utilities 下的Brows the file system即可看见传输的内容

hadoopyum镜像网站 hadoop国内镜像_大数据_03

3.3Hadoop开机自启(可以不做此步骤)

cd /usr/lib/systemd/system 
进入这个目录
vim hadoop. service
在此文件中添加一下内容(如果经常使用三台虚拟机都做):
[Unit]
Description=hadoop service
After=network.target
[Service]
Type=forking
ExecStartPre=/root/hadoop/server/hadoop/sbin   
ExecStart=/root/hadoop/server/hadoop/sbin
ExecReload=/root/hadoop/server/hadoop/sbin -s reload
ExceStop=/root/hadoop/server/hadoop/sbin/  -s stop
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=mixed
PrivateTmp=true
[Install]
WantedBy=multi-user.target
重启systemctl 重新加载配置:systemctl daemon-reload
添加开机自启动命令:systemctl enable hadoop.service

总结

提示:本文配置使用与cemtos7/8/9以及红帽7/8/9。有感兴趣的同志可以一起探讨关于hadoop的搭建。虽然这个是最基本的搭建,希望大家勿喷。(本人也是新手小白)
注意:个人喜欢配置好一台虚拟机后进行完整克隆,利用nmtui修改主机名,然后再添加三台主机的ip+主机节点名在vim /etc/hosts 和 vim workers.
如果不想克隆可以参考一下命令(/root/server/可以是自己想放的地址但是最好一致,解压在home就改成home即可):

cd /root/server/
rsync -rvl hadoop root@hadoop2:/root/server/
rsync -rvl hadoop root@hadoop3:/root/server/
rsync /etc/profile root@hadoop2:/etc/profile
rsync /etc/profile root@hadoop3:/etc/profile