基础数据仓库环境搭建(二) Hadoop的环境搭建

Apache Hadoop -分布式处理框架。集成了MapReduce(并行计算)、YARN(作业调度)和HDFS(分布式文件系统)。

1. 前期准备

1.准备3个虚拟机节点
2.Linux链接工具Xshell或者MobaXterm
3.三台节点配置了免密登录

2. Hadoop下载

链接:

https://pan.baidu.com/s/1iaKxgeQHE66OJaOs0gUKYQ 

提取码:8520

3.配置说明

主要是在虚拟机上搭建模拟生产环境的伪分布模式

伪分布模式(Pseudo-Distributed Mode)

Hadoop的守护进程运行在本机机器,模拟一个小规模的集群。

在一台主机模拟一个小规模的集群,在这种模式下Hadoop使用的是分布式文件系统,一般用于程序调试与测试。也可以说 伪分布式 是 完全分布式 的一个特例。

在这种模式下,Hadoop使用的是分布式文件系统。在单机模式之上增加了代码调试功能,允许检查内存使用情况,HDFS输入输出,以及守护进程交互。Hadoop启动NameNode、DataNode、SecondaryNameNode、ResourceManager、NodeManager,这些守护进程都在同一台机器上运行,是相互独立的Java进程。

需要修改配置文件:core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml。

格式化文件系统

4.集群规划

集群节点分配	
主机名	主机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	NameNodeDataNodeNodeManager
node02	ResourceManagerDataNodeNodeManager
node03	SecondaryNameNodeDataNodeNodeManager

5.基本工具安装

安装同步时间工具–每台节点都需要执行此操作

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 firewalld

6.修改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 node03

7.配置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.下载Java

Hadoop 的运行需要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.gz

10.修改配置文件

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
<!--<configuration></configuration>中间添加一下内容-->
<property>
    <name>fs.defaultFS</name><!--定义Hadoop HDFS中 namenode 的URI和端口【必须配置】-->
    <value>hdfs://node01:9000</value>
</property>
<property>
    <name>hadoop.tmp.dir</name><!--Hadoop运行时临时的存储目录【必须配置】-->
    <value>file:/opt/apps/hadoop-3.2.2/tmp</value>
</property>
<property>
    <name>io.file.buffer.size</name><!--用作序列化文件处理时读写buffer的大小【可以不配置】-->
    <value>131702</value>
</property>
<property>
    <name>hadoop.http.staticuser.user</name>
    <value>root</value>
</property>
<!--以下两个配置暂时用不上【可以不必配置】实际需要的时候注意修改hadoopuser为Hadoop的用户这里应该是root-->
<property>
    <name>hadoop.proxyuser.root.hosts</name>
    <value>*</value>
</property>
<property>
    <name>hadoop.proxyuser.root.groups</name>
    <value>*</value>
</property>

hdfs-site.xml

此配置文件是HDFS核心的配置文件,对应于HDFS模块,在此配置文件中配置文件系统数据存储路径和SecondaryNameNode地址等。

[root@node01 hadoop-3.2.2]# vim etc/hadoop/hdfs-site.xml
<!--<configuration></configuration>中间添加一下内容-->
<property><!--namenode节点 元数据存储目录【必须配置】-->
    <name>dfs.namenode.name.dir</name>
    <value>file:/opt/apps/hadoop-3.2.2/dfs/name</value>
</property>
<property><!--datanode 真正的数据存储目录【必须配置】-->
    <name>dfs.datanode.data.dir</name>
    <value>file:/opt/apps/hadoop-3.2.2/dfs/data</value>
</property>
<property><!--指定DataNode存储block的副本数量,不大于DataNode的个数就行,默认为3【必须】-->
    <name>dfs.replication</name>
    <value>2</value>
</property>
<property><!--指定SecondaryNamenode的工作目录【必须配置】-->
    <name>dfs.namenode.checkpoint.dir</name>
    <value>file:/opt/apps/hadoop-3.2.2/dfs/namesecondary</value>
</property>
<property><!--指定SecondaryNamenode的http协议访问地址【必须配置】-->
    <name>dfs.namenode.secondary.http-address</name>
    <value>node03:9868</value>
</property>
<property><!--指定SecondaryNamenode的https协议访问地址:【可以不进行配置】-->
    <name>dfs.namenode.secondary.https-address</name>
    <value>node03:9869</value>
</property>

yarn-site.xml

此配置文件是Yarn核心的配置文件,对应于Yarn模块,在此配置文件中配置ResourceManager主机名和NodeManager内存大小等。

[root@node01 hadoop-3.2.2]# vim etc/hadoop/yarn-site.xml
<!--<configuration></configuration>中间添加一下内容-->
<property>
    <!--Reducer获取数据的方式【必须配置】-->
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
<property>
    <!--Reducer获取数据的方式中shuffle过程对应的类,可以自定义,【可以不配置】,这是默认的-->
    <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
    <!--ResourceManager主机名,配置后其他的address就不用配置了,除非需要自定义端口【必须配置】-->
    <name>yarn.resourcemanager.hostname</name>
    <value>node02</value>
</property>
<property>
    <!--NodeManager节点的内存大小,单位为MB【必须配置】-->
    <name>yarn.nodemanager.resource.memory-mb</name>
    <value>2048</value>
</property>
<property>
    <!--NodeManager节点硬件的自动探测,主要为修正CPU个数,开启后不影响前面内存的配置-->
    <name>yarn.nodemanager.resource.detect-hardware-capabilities</name>
    <value>true</value>
</property>
<!-- 日志聚集功能【暂时不需要配置】 -->
<property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>
<!-- 日志保留时间设置7天 【暂时不需要配置】-->
<property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
</property>
<property>
        <name>yarn.nodemanager.env-whitelist</name>
 <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>

mapred-site.xml

此配置文件是MapReduce核心的配置文件,对应于MapReduce模块,

[root@node01 hadoop-3.2.2]# vim etc/hadoop/mapred-site.xml

mapreduce.framework.name MapReduce程序运行的框架,默认为local,集群模式配置为yarn

<!--使用yarn运行mapreduce程序【必须配置】-->
<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>
<!--配置历史服务器【暂时不需要配置】-->
<property><!--MapReduce JobHistory Server地址-->
    <name>mapreduce.jobhistory.address</name>
    <value>node01:10020</value>
</property>
<!--MapReduce JobHistory Server Web界面地址-->
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>node01:19888</value>
</property>

workers

该文件中配置所有DataNode节点的主机名

[root@node01 hadoop-3.2.2]# vim etc/hadoop/workers
#添加以下内容:这里添加的是所有的数据节点,注意删除原来的localhost【必须配置】
node01
node02
node03

11.文件分发

将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/profile

13.格式化Hadoop

hdfs namenode -format 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半岛铁盒@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值