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  NameNode,DataNode,NodeManager
node02  ResourceManager,DataNode,NodeManager
node03  SecondaryNameNode,DataNode,NodeManager

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

基础数据仓库环境搭建(二) Hadoop的环境搭建相关推荐

  1. windows下搭建hadoop 搭建本地hadoop开发环境

    一.下载所需文件 1.JDK下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.h ...

  2. Hadoop详解(五)——ZooKeeper详解,ZooKeeper伪分布搭建和集群搭建,Hadoop集群搭建,sqoop工具的使用

    ZooKeeper简介 什么是ZooKeeper? ZooKeeper是Google的Chubby一个开源的实现,是Hadoop分布式协调服务. 它包含了一个简单的原语集,分布式应用程序可以基于它实现 ...

  3. hadoop ubantu环境搭建_ubuntu hadoop学习 环境搭建

    单机模式 下载hadoop-2.7.3.tar.gz 并解压缩 安装java环境 sudo apt install openjdk-8-jdk 设置环境变量 vim /etc/profile expo ...

  4. 零基础学Python之二集成开发环境(IDE)

    当安装好python之后,其实就已经可以进行开发了.下面我们开始写第一行python代码. 值得纪念的时刻:Hello world 如果是用windows,请打开CMD,并执行python. 如果是U ...

  5. 我在Windows系统搭建python的Hadoop+Spark环境时踩过的坑

    本人是一个最近正在研究链路预测的小白,读论文的时候有幸从导师那里获得了论文相关的算法代码,可是论文里面涉及到了spark和Hadoop,需要搭建环境,于是这只无脑的小白成功踏入了搭建Hadoop+sp ...

  6. Hadoop学习环境搭建

    Hadoop学习环境搭建 Apache Hadoop3.1.1虚拟机环境搭建 工具准备 安装虚拟机 Hadoop安装和配置 配置Hadoop001.Hadoop002.Hadoop003互相访问 配置 ...

  7. 小知识点:ARM 架构 Linux 大数据集群基础环境搭建(Hadoop、MySQL、Hive、Spark、Flink、ZK、Kafka、Nginx、Node)

      换了 M2 芯片的 Mac,以前 x86 版本的 Linux 大数据集群基础环境搭建在 ARM 架构的虚拟机集群上有些用不了了,现在重新写一份基于 ARM 架构的,少数不兼容之外其他都差不多,相当 ...

  8. 零基础搭建电影网站教程——二、运行环境

    二.运行环境 有了域名与服务器了,现在可以搭建一下电影网站运行环境了. [我的站点:百视影院] (1)SSH连接 我使用的是XShell工具,在电脑上下载安装一下.打开Xshell,创建一个新的连接, ...

  9. Spark基础学习笔记04:搭建Spark伪分布式环境

    文章目录 零.本讲学习目标 一.搭建伪分布式Hadoop (一)登录ied虚拟机 (二)配置免密登录 1.生成密钥对 2.将生成的公钥发送到本机(虚拟机ied) 3.验证虚拟机是否能免密登录本机 (三 ...

最新文章

  1. 5G的3大应用场景落地开花,中国或将引领全球5G产业发展
  2. 在windows 2008 server core 上搭建sql server 2012 alwayson group
  3. servlet怎么接受请求_谁再问Servlet的问题,我就亲自上门来教学了
  4. javascrpt --- 使用jquery添加dom元素和Angular ng-repeat生成select性能比较
  5. 【Time系列一】datetime的妙用
  6. 你的博士三五年,不艰辛?
  7. Java 反射机制详解:私有方法调用头大?如何通过反射调用类中的私有方法?
  8. 深入理解Java虚拟机——类加载机制
  9. [转]Android中在SurfaceView上高效绘图
  10. Hibernate,JPA注解@ManyToMany_JoinTable
  11. Delphi的TDataSetProvider、TDataSet、TAdoQuery、TDataSource、TDataModule控件的组合使用
  12. MATLAB 读取表格 | readmatrix函数
  13. 迎来智能数据分析的新时代
  14. 快速阅读之眼球的训练
  15. 巴斯大学计算机世界专业排名,2019上海软科世界一流学科排名计算机科学与工程专业排名巴斯大学排名第301-400...
  16. 12306抢票,极限并发带来的思考?
  17. (后台)Openbravo如何实现业务事件监听处理
  18. 刚入职的程序员小白你该如何提升自己?(新手看)
  19. 【Apache运维基础(5)】Apache的Rewrite攻略(2)
  20. 上帝或许不掷骰子,但可能会踢足球|图片中的数学之美

热门文章

  1. PMBOK7和PRINCE2的相似之处和定位之不同(上篇)
  2. .net core引用错误的Entity Framework而导致不能正常迁移数据的解决办法
  3. 在RHEL上实现OpeenSSH
  4. 如何使用CloudStats监控Linux服务器
  5. 2015年最好的PHP框架调查统计
  6. 处理外部信息(xml,html,js,shareObject)
  7. 树莓派云音乐c语言,基于树莓派的红外遥控版网易云音乐播放器
  8. 【PP模块】订单分割(Order Split)
  9. SAP ABAP F4的检索帮助(包括自定义检索帮助)
  10. SAP销售和财务数据库表之间的关系