大数据系列(一)之hadoop介绍及集群搭建

文章最早发布来源,来源本人原创初版,同一个作者:
https://mp.weixin.qq.com/s/fKuKRrpmHrKtxlCPY9rEYg

系列介绍:本系列针对大数据这门综合技术逐一展开。

大数据必备技术栈

hadoop简介

大数据技术涉及两方面,一是数据存储,二是数据运算
hadoop是一种分布式框架,可利用集群对用户业务逻辑海量数据进行分布式处理,hadoop是一个生态圈,跟springcloud概念类似,包含多种技术,如下表

组件技术 描述
hdfs 分布式文件系统
MapReduce 分布式计算框架
YARN 分布式资源管理框架
zookeeper 分布式协调服务
Oozie 作业调度系统
Hive 数据仓库工具
Hbase 分布式数据库
Flume 数据采集工具
Sqoop 数据传输工具

后面会对hadoop生态圈中的技术细节进行展开。本文主要介绍hadoop集群的搭建及hdfs分布式文件系统。

hadoop版本介绍

目前hadoop版本到了hadoop3.0,hdfs和MapReduce是hadoop1.0的核心组件;
hadoop2.0版本多了YARN组件;
yarn负责作业调度与集群资源管理的框架。

1、基础环境准备

本文例子所用环境为本地虚拟机搭建,具体虚拟机搭建方式本文不做介绍。

本地环境地址如下:

ip地址 主机名
192.168.40.110 zht-master
192.168.40.111 zht-slave1
192.168.40.112 zht-slave2

1.1 建立主机名与ip的映射关系

进入每一台服务器后台,修改hosts配置文件如下

[root@localhost ~]# vi /etc/hosts127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.40.110 zht-master
192.168.40.111 zht-slave1
192.168.40.112 zht-slave2

1.2 配置免密登录

免密登录是为了后面hadoop集群各服务器之间的通信,操作如下,每一台服务器执行命令ssh-keygen -t rsa,生成私钥和公钥。

[root@localhost ~]# ssh -keygen -t rsa
Bad escape character 'ygen'.
[root@localhost ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
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:R8PLMMcZNMkA0TUCXUARhA/AXkQcgycTBUZh52mYwiw root@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
|   oO@@@OXB.     |
| o o==*oo+o=     |
|E +.o=+oo B      |
| . ...  .* o     |
|        S +      |
|         .       |
|                 |
|                 |
|                 |
+----[SHA256]-----+
[root@localhost ~]# 

命令执行之后会生成id_rsa(私钥)和id_rsa.pub(公钥),每台机器需要将对应的公钥放入authorized_keys文件中,具体操作如下

(1) 将master机器的公钥写入文件authorized_keys

[root@localhost .ssh]# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[root@localhost .ssh]# ll
total 12
-rw-r--r--. 1 root root  408 Sep 19 03:54 authorized_keys
-rw-------. 1 root root 1675 Sep 19 03:32 id_rsa
-rw-r--r--. 1 root root  408 Sep 19 03:32 id_rsa.pub

(2) 将对应的master机器上的authorized_keys 文件拷贝到zht-slave1机器上,具体命令如下所示:

[root@zht-master .ssh]# ll
total 12
-rw-r--r--. 1 root root  408 Sep 19 03:54 authorized_keys
-rw-------. 1 root root 1675 Sep 19 03:32 id_rsa
-rw-r--r--. 1 root root  408 Sep 19 03:32 id_rsa.pub
[root@zht-master .ssh]# scp authorized_keys root@zht-slave1:/root/.ssh/
The authenticity of host 'zht-slave1 (192.168.40.111)' can't be established.
ECDSA key fingerprint is SHA256:KIh8ybIUEHuuxE/f+oAc2/y3Vr9KWxK4behad8Rsq9s.
ECDSA key fingerprint is MD5:bf:09:7e:c6:8f:ea:1b:bf:48:e9:15:01:57:c9:62:2e.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'zht-slave1,192.168.40.111' (ECDSA) to the list of known hosts.
root@zht-slave1's password:
authorized_keys                                                           100%  408   112.1KB/s   00:00
[root@zht-master .ssh]# 

(3)将zht-slave1上的公钥追加到对应的authorized_keys 文件中,并且将文件拷贝到zht-slave2机器上对应路径下

[root@zht-slave1 .ssh]# ll
total 12
-rw-r--r--. 1 root root  408 Sep 19 04:15 authorized_keys
-rw-------. 1 root root 1679 Sep 19 04:14 id_rsa
-rw-r--r--. 1 root root  397 Sep 19 04:14 id_rsa.pub
[root@zht-slave1 .ssh]# cat id_rsa.pub >> authorized_keys
[root@zht-slave1 .ssh]#
[root@zht-slave1 .ssh]#
[root@zht-slave1 .ssh]#
[root@zht-slave1 .ssh]#
[root@zht-slave1 .ssh]#
[root@zht-slave1 .ssh]#
[root@zht-slave1 .ssh]# scp authorized_keys root@zht-slave2:/root/.ssh/
The authenticity of host 'zht-slave2 (192.168.40.112)' can't be established.
ECDSA key fingerprint is SHA256:KIh8ybIUEHuuxE/f+oAc2/y3Vr9KWxK4behad8Rsq9s.
ECDSA key fingerprint is MD5:bf:09:7e:c6:8f:ea:1b:bf:48:e9:15:01:57:c9:62:2e.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'zht-slave2,192.168.40.112' (ECDSA) to the list of known hosts.
root@zht-slave2's password:
authorized_keys                                                           100%  805   110.4KB/s   00:00
[root@zht-slave1 .ssh]# 

(4)将对应的zht-slave2机器上的公钥追加到authorized_keys 文件,然后将此机器上的authorized_keys 文件远程拷贝到之前的zht-master\zht-slave1机器上对应路径。以上这些步骤可以直接把每台机器上的公钥写入对应文件,然后将文件拷贝到各个服务器路径上面即可。
对应的文件内容每台机器一致如下

[root@zht-slave1 .ssh]# cat authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAABAQDDQwjhSe9J0Qqe9XytVMSc1GdH4UgP3YDT5aHsWB4Fs9Vx3c3Zyma+8xswvh/FS8FE8L/l+JYlFsn5Fr94DIuERfoku63oM1NS/1j1yZ3nPCQhpliX0yhN6MRibRI+S+Zsi4HKpVxB7XlBP4+SQ1/prsMJfuj27pc7vNlHP1YW39R4EGTjTCRHx6XON0xSXqjkuMqCOTlM2YENE5TGrQ+DRISdqG5r+A0MHdtNytiCuJjTqHyF+0/FU0VEMP4VDlJKCz5nIVvjW/3RznwomzcgUxCtc9eoOFOsuUejYCeX24tMIcSWameN+LKv3o9cW/y8cr+Q5T6Z6dtHPuIcoOp root@zht-master
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAABAQDMyUodRqtQE1z4O8AE0BtnPbfQXTzrx/lsv2G3+pswpaPtmEfTPRGA8DznQSd7g0T96n4sZ7bikP5ZqP9FYKfr+NNgXctaNYssGHABta+YpFe48rTu60r8jNqiQqQAzKLVqQy0sHqWHltB9sMDLciN7QtzH0lhaI/BOY5SzH9gMpshXmXu+ipcqSdOgL8kTfkCiUrrRTY0omAdnBEvNkMbylZbeqZXP5Bp/YPte/7L0EQuzzStFF6xxhv3DOBv5wm/1Q7TUHhxOpNeVh+LspeZoeu1DmRJrG5zwsbPcv/fgwJIEItvBw1CUmJ3qzLhxW9b9V28KI+0xJ1WrgrlOE3 root@zht-slave1
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAABAQCmX++hFiqcSvMXg+ZUw2eC9ahwt1VwdymZkCEFipNHyYYfKiUvDxG1ip0RlQhYe8uNtAOanzbjbDHAkspenM88SUxe9f5XximOSlG34t0xNCVDHkKuhUgUlckjA+QoSS6uEikFLjGSJKqkXAmtIc+PmkG10Dm0t27pZIuKJ/EwuA2sM04t0HLWqNc0D7HwdtTeXJUlsPg10fKhu50eI+VoiNLRqk8DPJr6+5FaqcDiSKgR8DEUnRmqNL8iC/UpRhpAaIKymDd6Yr/hhKgRam1qTnUUdUPwuKm2fqzY/K3XQu4JaZsAyinJJg5K9fAN676xcodfwhVMJjbZVtGNnxb root@zht-slave2

这里配置免密登录还有其他方式,自行选择。

2、hadoop集群搭建

2.1 核心配置文件

文件名 功能介绍
hadoop-env.sh 配置hadoop运行所需的环境变量
yarn-env.sh 配置YARN运行所需的环境变量
core-site.xml hadoop核心全局配置文件
hdfs-site.xml hdfs配置文件,继承core-site.xml
mapred-site.xml MapReduce配置文件
yarn-site.xml yarn配置文件

2.2 安装包下载

官网下载地址
https://hadoop.apache.org/releases.html

本文搭建的版本为2.10.0,最新版本到了3.3.0是2020年6月发布的
安装包下载地址:
https://mirrors.bfsu.edu.cn/apache/hadoop/common/hadoop-2.10.0/hadoop-2.10.0.tar.gz

如果下载很慢可以通过百度网盘下载,如下所示
链接:https://pan.baidu.com/s/15fhCGIBEddTRPDDwmymwTQ
提取码:dbu3

2.3 上传发布包

1 、添加用户hadoop

[root@zht-master hadoop]# sudo adduser hadoop
[root@zht-master hadoop]# passwd hadoop
Changing password for user hadoop.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

2、添加hadoop用户组

[root@zht-master hadoop]# sudo usermod -a -G hadoop hadoop

3、文件上传
创建/tpdata/hadoop目录,将hadoop包上传到对应目录下面

-rw-r--r--. 1 root root 392115733 Sep 19 23:32 hadoop-2.10.0.tar.gz
[root@zht-master hadoop]# pwd
/tpdata/hadoop

4、解压文件
tar -xzvf hadoop-2.10.0.tar.gz
解压之后文件组合如下:

[root@zht-master hadoop]# cd hadoop-2.10.0
[root@zht-master hadoop-2.10.0]# ll
total 128
drwxr-xr-x. 2 12334 systemd-journal    194 Oct 22  2019 bin
drwxr-xr-x. 3 12334 systemd-journal     20 Oct 22  2019 etc
drwxr-xr-x. 2 12334 systemd-journal    106 Oct 22  2019 include
drwxr-xr-x. 3 12334 systemd-journal     20 Oct 22  2019 lib
drwxr-xr-x. 2 12334 systemd-journal    239 Oct 22  2019 libexec
-rw-r--r--. 1 12334 systemd-journal 106210 Oct 22  2019 LICENSE.txt
-rw-r--r--. 1 12334 systemd-journal  15841 Oct 22  2019 NOTICE.txt
-rw-r--r--. 1 12334 systemd-journal   1366 Oct 22  2019 README.txt
drwxr-xr-x. 3 12334 systemd-journal   4096 Oct 22  2019 sbin
drwxr-xr-x. 4 12334 systemd-journal     31 Oct 22  2019 share

5、修改文件属组(非必须)

drwxr-xr-x. 9 12334 systemd-journal       149 Oct 22  2019 hadoop-2.10.0
-rw-r--r--. 1 root  root            392115733 Sep 19 23:32 hadoop-2.10.0.tar.gz
[root@zht-master hadoop]# chown -R hadoop:hadoop hadoop-2.10.0
[root@zht-master hadoop]# ll
total 382928
drwxr-xr-x. 9 hadoop hadoop       149 Oct 22  2019 hadoop-2.10.0
-rw-r--r--. 1 root   root   392115733 Sep 19 23:32 hadoop-2.10.0.tar.gz

6、添加hadoop的环境变量配置,vi /etc/profile

export HADOOP_HOME=/tpdata/hadoop/hadoop-2.10.0
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

执行 source /etc/profile 使配置生效

2.4 修改配置文件

2.4.1 hadoop-env.sh

进入 zht-master 机器中安装的hadoopj解压之后的目录下
/tpdata/hadoop/hadoop-2.10.0/etc/hadoop
找到文件中的JAVA_HOME配置,修改对应的jdk路径,这个是hadoop启动时需要的,能够执行守护进程

# The java implementation to use.
export JAVA_HOME=/usr/local/jdk/jdk1.8.0_251
2.4.2 core-site.xml

修改文件中configuration中的内容,具体如下:

<configuration><property><!--临时数据存储目录--><name>hadoop.tmp.dir</name><value>/tmp/hadoop</value><description>A base for other temporary directories.</description></property><property><!--hdfs文件系统的名称,对应hadoop集群的主节点--><name>fs.default.name</name><value>hdfs://zht-master:9000</value></property><property><!--hdfs的缓存大小--><name>io.file.buffer.size</name><value>4096</value></property>
</configuration>
2.4.3 hdfs-site.xml

此文件用于设置HDFS的NameNode和DataNode进程

/tpdata/hadoop/hadoop-2.10.0/hdfs/name 为hdfs名字节点存储目录,可以自定义创建;
/tpdata/hadoop/hadoop-2.10.0/hdfs/data 为hdfs数据节点存储数据块时的存放位置,可以自定义创建

<property><name>dfs.replication</name><value>1</value></property><property><name>dfs.namenode.name.dir</name><value>file:/tpdata/hadoop/hadoop-2.10.0/hdfs/name</value><final>true</final>
</property><property><name>dfs.datanode.data.dir</name><value>file:/tpdata/hadoop/hadoop-2.10.0/hdfs/data</value><final>true</final></property><property><name>dfs.namenode.secondary.http-address</name><value>zht-master:9001</value></property><property><name>dfs.webhdfs.enabled</name><value>true</value></property><property><name>dfs.permissions</name><value>false</value></property>
2.4.4 mapred-site.xml

此文件是MapReduce的核心配置文件
复制对应mapred-site.xml.template 模板文件到mapred-site.xml,然后修改配置

[root@zht-master hadoop]# cp mapred-site.xml.template mapred-site.xml

添加如下配置:

<property><name>mapreduce.framework.name</name><value>yarn</value><final>true</final></property><property><name>mapreduce.jobtracker.http.address</name><value>zht-master:50030</value></property><property><name>mapreduce.jobhistory.address</name><value>zht-master:10020</value></property><property><name>mapreduce.jobhistory.webapp.address</name><value>zht-master:19888</value></property><property><name>mapred.job.tracker</name><value>http://zht-master:9001</value></property>
2.4.5 yarn-site.xml

此文件为YARN集群的管理者,修改添加如下配置

    <property><!--启动YARN的ResourceManager服务的主机--><name>yarn.resourcemanager.hostname</name><value>zht-master</value></property><property><!--NodeManager启动时加载Shuffle服务--><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property>
2.4.6 配置从节点配置文件

1、将主节点上的hadoop拷贝到从节点

scp -r hadoop-2.10.0 root@zht-slave1:/tpdata/hadoop/
scp -r hadoop-2.10.0 root@zht-slave2:/tpdata/hadoop/

2、将主节点上的/etc/profile拷贝到从节点

scp /etc/profile  root@zht-slave1:/etc/profile
scp /etc/profile  root@zht-slave2:/etc/profile

3、从节点执行source /etc/profile 命令使环境变量生效

2.4.7 修改主节点上的slaves文件

此文件用于记录hadoop集群所有从节点的主机名,来配合使用脚本全部启动集群的从节点,但是必须要注意个节点之间是SSH免密登录的
cd /tpdata/hadoop/hadoop-2.10.0/etc/hadoop

[root@zht-master hadoop]# vi slaves
zht-master
zht-slave1
zht-slave2
2.4.8 格式化文件系统

初次启动集群需要对主节点进行初始化处理,后续再启动时不需要再次执行

[root@zht-master hadoop]# hdfs namenode -format

执行上述命令之后如下图所示则表明文件系统格式化成功

3 集群启动及查看

在主节点上依次执行执行命令start-dfs.sh,启动文件系统;
执行命令start-yarn.sh ,启动YARN

[root@zht-master hadoop-2.10.0]# start-dfs.sh

启动完成后查看主节点hadoop的进程,命令jps

[root@zht-master sbin]# jps
3202 SecondaryNameNode
3894 NodeManager
3799 ResourceManager
3927 Jps
3464 NameNode
3054 DataNode
[root@zht-master sbin]#

从节点hadoop进程

[root@zht-slave1 tpdata]# jps
3073 Jps
2899 NodeManager
2677 DataNode
[root@zht-slave1 tpdata]#

下期主题:hadoop之分布式文件系统探索

大数据系列(一)之hadoop介绍及集群搭建相关推荐

  1. 大数据开发·关于虚拟机Hadoop完全分布式集群搭建教程

    hadoop完全分布式集群搭建 一.搭建准备 1.安装VMware虚拟机 2.Xshell 7 远程客户端及Xftp 7安装 3.搭建模板虚拟机hadoop100 配置虚拟机网络 为虚拟机普通用户配置 ...

  2. 大数据学前准备--zookeeper详解与集群搭建(保姆级教程)

    前言 本人是才学完大数据的无业游民,我将会总结学习收获或发表自己的学习心得,期望给初学者也为自己今后复习提供一些帮助. 我将陆续发布大数据阶段所学,包括但不限于(hadoop,hive,hbase,p ...

  3. 2021年大数据ZooKeeper(二):ZooKeeper集群搭建

    目录 ZooKeeper集群搭建 第一步:下载zookeeeper的压缩包,下载网址如下 第二步:解压 第三步:修改配置文件 第四步:添加myid配置 ​​​​​​​第五步:安装包分发并修改myid的 ...

  4. 大数据学习笔记第1课 Hadoop基础理论与集群搭建

    大数据学习笔记第1课 Hadoop基础理论与集群搭建 一.环境准备 二.下载JDK 三.安装JDK 四.下载hadoop 五.安装hadoop集群 六.打通3台服务器的免密登录 七.hadoop集群配 ...

  5. [大数据技术与应用省赛学习记录二]——模块一(HADOOP完全分布式集群搭建)

    **在操作前,先梳理一下HADOOP完全分布式需要做些什么,不然像无头的苍蝇一样,永远不知道做什么.因为我本人比赛是一台服务器Centos 7,与三台客户端Ubuntu 18.04,所以以物理机的角度 ...

  6. 2021年大数据HBase(二):HBase集群安装操作

    全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 前言 HBase集群安装操作 一.上传解压HBase安装包 ...

  7. 【MySQL5.7版本单节点大数据量迁移到PXC8.0版本集群全记】

    MySQL5.7版本单节点大数据量迁移到PXC8.0版本集群全记录-1 - likingzi - 博客园 MySQL5.7版本单节点大数据量迁移到PXC8.0版本集群全记录-2 - likingzi ...

  8. Hadoop简介和集群搭建

    文章目录 Hadoop简介和集群搭建 Hadoop介绍 Hadoop的发行版本和三大公司 hadoop的架构 安装Hadoop 第一步:上传编译后的apache hadoop包并解压 第二步:修改配置 ...

  9. Hadoop完全分布式集群搭建详细图文教程

    本文所使用的环境及版本: CentOS Linux release 7.9.2009 (Core) jdk1.8.0_291 hadoop-3.2.2 一.安装模板机 1.安装CentOS 7.9并配 ...

最新文章

  1. python使用matplotlib可视化阶梯图、使用step函数可视化阶梯图、可视化时间序列数据的波动周期和规律
  2. 【转】读马化腾的产品设计观
  3. windows下使用cmake编译zlib与libpng libjpeg 留此备份
  4. ECMA Script 6新特性之解构赋值
  5. CCSprite setTextureRect 的坐标的坑
  6. 集成Lucene和HBase(转)
  7. mysql5.7编译安装路径_MySQL_MySQL 5.5/5.6/5.7及以上版本安装包安装时如何选择安装路径,安装环境需求: 自从昨天安 - phpStudy...
  8. asp.net core WebAPI实现CRUD
  9. 第三周PLECS仿真实验
  10. 大数据日志分析项目架构
  11. struts2 helloworld
  12. 史上最全Linux面试题(2020最新版)
  13. RFID(Radio Frequency Identification)技术,又称无线射频识别
  14. 动态规划——状态转移方程
  15. 流利阅读12.16 ‘Aquaman’ is already a box office titan
  16. 什么是美国能源之星计划?
  17. PXE网络安装linux系统
  18. 笔记本连接无线却找不到服务器,笔记本win7系统无线网络找不到无法连接wifi怎么办...
  19. c语言--余数正负判断,printf函数占位符
  20. python识别颜色并提取轮廓_pythonopencv检测并提取目标颜色

热门文章

  1. 百度token怎么获取_【专栏精选】实战:百度语音识别
  2. 【Unity3D 灵巧小知识点】☀️ | Unity 中 怎样切换 天空盒 背景
  3. QTreeWidget去掉虚线框
  4. ppt如何转换成pdf
  5. vue中reject与provide使用
  6. 【01】什么是概率图模型?
  7. 如何在visio中画出矩阵
  8. [网络安全自学篇] 七十五.Vulnhub靶机渗透之bulldog信息收集和nc反弹shell(三)
  9. ftp工具绿色版,好用的ftp工具绿色版下载教程
  10. EPLAN史上最全部件库,官网下载,部件宏,EDZ格式,大小合适导入容易