1. 前期准备Apache Hadoop -分布式处理框架。集成了MapReduce(并行计算)、YARN(作业调度)和HDFS(分布式文件系统)。
1.准备3个虚拟机节点
2.Linux链接工具Xshell或者MobaXterm
3.三台节点配置了免密登录
链接:
https://pan.baidu.com/s/1iaKxgeQHE66OJaOs0gUKYQ
提取码:8520
3.配置说明主要是在虚拟机上搭建模拟生产环境的伪分布模式
伪分布模式(Pseudo-Distributed Mode)
Hadoop的守护进程运行在本机机器,模拟一个小规模的集群。
在一台主机模拟一个小规模的集群,在这种模式下Hadoop使用的是分布式文件系统,一般用于程序调试与测试。也可以说 伪分布式 是 完全分布式 的一个特例。
4.集群规划在这种模式下,Hadoop使用的是分布式文件系统。在单机模式之上增加了代码调试功能,允许检查内存使用情况,HDFS输入输出,以及守护进程交互。Hadoop启动NameNode、DataNode、SecondaryNameNode、ResourceManager、NodeManager,这些守护进程都在同一台机器上运行,是相互独立的Java进程。
需要修改配置文件:core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml。
格式化文件系统
集群节点分配 主机名 主机IP node01 192.168.100.101 node02 192.168.100.102 node03 192.168.100.103 软件名称 版本号 Java 1.8.0_291 CentOS CentOS-7-x64-2009 Hadoop 3.2.2 各软件安装路径 Hadoop /opt/apps/hadoop-3.2.2 Java /opt/apps/jdk1.8.0_291 节点进程 node01 NameNode,DataNode,NodeManager node02 ResourceManager,DataNode,NodeManager node03 SecondaryNameNode,DataNode,NodeManager5.基本工具安装
安装同步时间工具–每台节点都需要执行此操作
yum -y install ntp ntpdate
设置与网络时间同步
ntpdate cn.pool.ntp.org
#!系统时间写入硬件时间【将硬件时钟调整为与目前的系统时钟一致】
hwclock --systohc
每台节点安装 vim 编辑器
每台节点均安装 vim 编辑器,不使用默认的vi编辑器
yum -y install vim
文件上传(rz)下载(sz)工具
可以在Xshell工具中通过rz调出上传文件的窗口进行文件上传,也可以通过sz文件名下载某一个文件,上传文件时可以通过拖拽文件到Shell面板直接上传。【在 node01 上安装即可】
yum -y install lrzsz
安装网络下载工具 wget其中一台安装即可【在node01上安装即可】
yum -y install wget关闭防火墙
每台节点均需要执行关闭防火墙和禁止开机启动防火墙的操作
查看防火墙开启状态
systemctl status firewalld
关闭防火墙
systemctl stop firewalld
禁止开机启动防火墙
systemctl disable firewalld6.修改hosts文件
vim /etc/hosts
#127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 #::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.100.101 node01 192.168.100.102 node02 192.168.100.103 node037.配置SSH免密码登录
配置免密码登录的目的是为了能够让主机之间相互信任,不需要密码即可访问
#! 每台节点先使用ssh执行以下,以在主目录产生一个.ssh 文件夹 [root@node01 ~]# ssh 192.168.100.101 #! 然后输入no即可 The authenticity of host '192.168.100.101 (192.168.100.101)' can't be established. ECDSA key fingerprint is SHA256:PamSi9sKideQkXQWm9stSYkf85oydA+TUbwiBtXkf4E. ECDSA key fingerprint is MD5:5b:17:f8:7c:ae:49:27:f8:2a:24:30:65:a6:f3:4a:49. Are you sure you want to continue connecting (yes/no)? no Host key verification failed. #! 每台机器均进入~/.ssh 目录进行操作 [root@node01 ~]# cd ~/.ssh #! 输入以下命令,一路回车,用以产生公钥和秘钥 [root@node01 .ssh]# ssh-keygen -t rsa -P '' #! 出现以下信息说明生成成功 Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:KU0Z/kXpvREFPvkq6wBwog8NLjZ6fSQDyM+747BtUsA root@node01 The key's randomart image is: +---[RSA 2048]----+ | . ...o.| |.. . o ..... | |o.. . o = ...+. | | Eoo + * o .. oo | | =o* + S . o.| | o =.* . . .. | |..o.. o . . . | | o+o.. . o | | .++. .o | +----[SHA256]-----+ #! 将所有的id_rsa.pub文件进行合并(最简单的方法是将所有节点的文件内容追加到node01主机上) [root@node01 .ssh]# cat ~/.ssh/id_rsa.pub | ssh root@node01 'cat >> ~/.ssh/authorized_keys' [root@node02 .ssh]# cat ~/.ssh/id_rsa.pub | ssh root@node01 'cat >> ~/.ssh/authorized_keys' [root@node03 .ssh]# cat ~/.ssh/id_rsa.pub | ssh root@node01 'cat >> ~/.ssh/authorized_keys' #! 查看node01上的authorized_keys文件内容,类似如下即可 [root@node01 .ssh]# more authorized_keys ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCqJi/Q061hGWv91WkRl+fpvoiQ6OyqLSc4lu5KR0FLmWmRxu/Bp1AeuBzf1V8YyjK+UNapYQMgX2/0RPjDWdCKfchrfhvQz9rOX7w8bqmcYGS44EFvy0kxBxPRUd0q/X/cm6J9tvOHsgKJEXIzTG1HD+arjUBmgbP6MOr1mH3UgjJqkhRS5SYP+RcbrRDnTVH+9IE2bKBBHadxK2r8GlP6DL/CtjjYAQSms9x9b9YR9rk/hDUmRO6piq+upy2Gmp4br1EnRTk3LLgIe5sJZQiBQOaoULL7tj6J7D2LXbC0z+a9p8s/PfE/G/7jhxBAoYpzB30JV5BPZmz702JOQjRn root@node01 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDLeDS5mF/PwxExo++I99A3BfK8gyaLUYC8mZGLT4q0H8Skb/7jN1qIjb8MfwubluoIKiHWrA2h/4iEkb2rBzEfUy/JxP+5a+zpi5NIOcVCX1PcNb7mPmWm1X42Zp6/hOZVXnAHfQv4ZuEZRZrp49GmOnZR8g5mz8Gpr0rl9hk0c1m50qpfY6I8EYjQ200suo/9vkd941Qquk3aX4A+6huAZq1Lu8B1EyTTDoV6cWS1eN4AbEdN4nedYN1NqfN5KxYs9ujCfCNfmF41l7HS8vgPc4Yu0aI4LmZnmFhLei0FdK6HSE03nptm7YJ45oDux5iehxXT8M0nvwC2JcK26aoD root@node02 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDTpPnqphGbBH3vqFFdI0oxq1EmI0zWbrl/52qIy6ysvJ+cqib34XzFHs4N61P4pyXwzL7tgMaYrAw0YfVMbZwmK3AAlpxlLTpfWLii/dBTazGcXaHhR0J3s6qKIwu3ZEaeAUGWyGO4KU1uMWM9foLWeAQthTJhYj4HmE2YNmHV5M39uw+F0j2JXMiWZBLEaklu/IpuWY0IgYVvj/uACowmeFUHHWsYezH0GbxcHPpLnenSfcWxUAXNNaVYURKV6WnXqmsxV/9k8rWQ49Apk5AjHsAKpdWRXEzGVr0FBBydoGkCCNvgrr1ORAAiUnFOp0ZEx/Pq9T8cQVdCjk0pILwv root@node03 #! 将node01上的authorized_keys文件分发到其他主机上 [root@node01 .ssh]# scp ~/.ssh/authorized_keys root@node02:~/.ssh/ [root@node01 .ssh]# scp ~/.ssh/authorized_keys root@node03:~/.ssh/ #! 每台机器之间进行ssh免密码登录操作,包括自己与自己 [root@node01 ~]# ssh node01 [root@node01 ~]# ssh node02 [root@node02 ~]# ssh node01 [root@node01 ~]# ssh node03 [root@node03 ~]# ssh node01 [root@node01 ~]# ssh node02 [root@node02 ~]# ssh node02 [root@node02 ~]# ssh node03 [root@node03 ~]# ssh node02 [root@node02 ~]# ssh node03 [root@node03 ~]# ssh node03
SSH 免密码配置结束后建议创建快照。
8.下载JavaHadoop 的运行需要Java环境,因此必须在所有节点上安装Java,并且对Java版本有如下要求:
Hadoop 3.3 以上支持Java 8 and Java 11,但是编译时只支持Java 8 Hadoop 3.0 — 3.2 只支持Java 8 Hadoop 2.7.x — 2.x 支持Java 7 and Java 8
#! 在node01主节点上创建指定目录 [root@node01 ~]# mkdir -p /opt/apps #! 进入到apps目录 [root@node01 ~]# cd /opt/apps/ #! 使用rz命令从Windows主机上传jdk压缩包到node01节点,也可以直接拖拽至xshell命令窗口 [root@node01 apps]# rz #! 解压到当前目录 [root@node01 apps]# tar -zxvf jdk-8u281-linux-x64.tar.gz [root@node01 apps]# vim /etc/profile #! 在该文件后面追加一下内容 export JAVA_HOME=/opt/apps/jdk1.8.0_291 export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib/rt.jar export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin #! 使刚才的设置生效 [root@node01 apps]# source /etc/profile #! 检测是否配置成功 [root@node01 apps]# java -version java version "1.8.0_291" Java(TM) SE Runtime Environment (build 1.8.0_261-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode)9.下载 Hadoop 安装包
下载完成后上传至node01节点,其他节点可以先不配置,最后统一远程拷贝即可。
#上传
[root@node01 ~]# cd /opt/apps
[root@node01 apps]# rz
解压
tar -zxvf hadoop-3.2.2.tar.gz10.修改配置文件
hadoop-env.sh
此配置文件是Hadoop一些核心脚本的配置文件,要指定JAVA_HOME。
[root@node01 apps]# cd hadoop-3.2.2/ [root@node01 hadoop-3.2.2]# vim etc/hadoop/hadoop-env.sh export JAVA_HOME=/opt/apps/jdk1.8.0_291
core-site.xml
此配置文件是Hadoop核心的配置文件,对应于Common模块在此配置文件中配置文件系统的访问端口和访问权限等。
[root@node01 hadoop-3.2.2]# vim etc/hadoop/core-site.xml
fs.defaultFS hdfs://node01:9000 hadoop.tmp.dir file:/opt/apps/hadoop-3.2.2/tmp io.file.buffer.size 131702 hadoop.http.staticuser.user root hadoop.proxyuser.root.hosts * hadoop.proxyuser.root.groups *
hdfs-site.xml
此配置文件是HDFS核心的配置文件,对应于HDFS模块,在此配置文件中配置文件系统数据存储路径和SecondaryNameNode地址等。
[root@node01 hadoop-3.2.2]# vim etc/hadoop/hdfs-site.xml
dfs.namenode.name.dir file:/opt/apps/hadoop-3.2.2/dfs/name dfs.datanode.data.dir file:/opt/apps/hadoop-3.2.2/dfs/data dfs.replication 2 dfs.namenode.checkpoint.dir file:/opt/apps/hadoop-3.2.2/dfs/namesecondary dfs.namenode.secondary.http-address node03:9868 dfs.namenode.secondary.https-address node03:9869
yarn-site.xml
此配置文件是Yarn核心的配置文件,对应于Yarn模块,在此配置文件中配置ResourceManager主机名和NodeManager内存大小等。
[root@node01 hadoop-3.2.2]# vim etc/hadoop/yarn-site.xml
yarn.nodemanager.aux-services mapreduce_shuffle yarn.nodemanager.aux-services.mapreduce_shuffle.class org.apache.hadoop.mapred.ShuffleHandler yarn.resourcemanager.hostname node02 yarn.nodemanager.resource.memory-mb 2048 yarn.nodemanager.resource.detect-hardware-capabilities true yarn.log-aggregation-enable true yarn.log-aggregation.retain-seconds 604800 yarn.nodemanager.env-whitelist JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME
mapred-site.xml
此配置文件是MapReduce核心的配置文件,对应于MapReduce模块,
[root@node01 hadoop-3.2.2]# vim etc/hadoop/mapred-site.xml
mapreduce.framework.name MapReduce程序运行的框架,默认为local,集群模式配置为yarn
mapreduce.framework.name yarn mapreduce.jobhistory.address node01:10020 mapreduce.jobhistory.webapp.address node01:19888
workers
该文件中配置所有DataNode节点的主机名
[root@node01 hadoop-3.2.2]# vim etc/hadoop/workers
#添加以下内容:这里添加的是所有的数据节点,注意删除原来的localhost【必须配置】 node01 node02 node0311.文件分发
将node01节点上的apps目录远程拷贝到其他节点
scp -r /opt/apps root@node02:/opt/
scp -r /opt/apps root@node03:/opt/12 设置环境变量
#! 所有各节点均编辑/etc/profile文件 [root@node01 hadoop-3.2.2]# vi /etc/profile #! 添加以下内容 ##Hadoop export HADOOP_HOME=/opt/apps/hadoop-3.2.2 export HADOOP_LOG_DIR=$HADOOP_HOME/logs export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin ##Hadoop User export HADOOP_USERNAME=root export HDFS_NAMENODE_USER=$HADOOP_USERNAME export HDFS_DATANODE_USER=$HADOOP_USERNAME export HDFS_SECONDARYNAMENODE_USER=$HADOOP_USERNAME export YARN_RESOURCEMANAGER_USER=$HADOOP_USERNAME export YARN_NODEMANAGER_USER=$HADOOP_USERNAME #! 使设置立即生效 [root@node01 hadoop-3.2.2]# source /etc/profile13.格式化Hadoop
hdfs namenode -format



