百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Hadoop3.2.1版本的环境搭建(hadoop3.1.3配置)

nanshan 2024-11-10 10:12 15 浏览 0 评论

最近有人提出能不能发一些大数据相关的知识,No problem ! 今天先从安装环境说起,搭建起自己的学习环境。

Hadoop的三种搭建方式以及使用环境:

  • 单机版适合开发调试;
  • 伪分布式适合模拟集群学习;
  • 完全分布式适用生产环境。

这篇文件介绍如何搭建完全分布式的hadoop集群,一个主节点,两个数据节点。

先决条件

  1. 准备3台服务器

虚拟机、物理机、云上实例均可,本篇使用Openstack私有云里面的3个实例进行安装部署。

  1. 操作系统及软件版本

服务器 系统 内存 IP 规划 JDK HADOOP node1 Ubuntu 18.04.2 LTS 8G 10.101.18.21 master JDK 1.8.0_222 hadoop-3.2.1 node2 Ubuntu 18.04.2 LTS 8G 10.101.18.8 slave1 JDK 1.8.0_222 hadoop-3.2.1 node3 Ubuntu 18.04.2 LTS 8G 10.101.18.24 slave2 JDK 1.8.0_222 hadoop-3.2.1

  1. 三台机器安装JDK

因为Hadoop是用Java语言编写的,所以计算机上需要安装Java环境,我在这使用JDK 1.8.0_222(推荐使用Sun JDK)

*安装命令*

sudo apt install openjdk-8-jdk-headless

配置JAVA环境变量,在当前用户根目录下的.profile文件最下面加入以下内容:

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

使用source命令让立即生效

source .profile
  1. host配置

修改三台服务器的hosts文件

vim /etc/hosts

#添加下面内容,根据个人服务器IP配置

10.101.18.21 master
10.101.18.8 slave1
10.101.18.24 slave2

免密登陆配置

  1. 生产秘钥
ssh-keygen -t rsa
  1. master免密登录到slave中
ssh-copy-id -i ~/.ssh/id_rsa.pub master
ssh-copy-id -i ~/.ssh/id_rsa.pub slave1
ssh-copy-id -i ~/.ssh/id_rsa.pub slave2
  1. 测试免密登陆
ssh master 
ssh slave1
ssh slave2

Hadoop搭建

我们先在Master节点下载Hadoop包,然后修改配置,随后复制到其他Slave节点稍作修改就可以了。

  1. 下载安装包,创建Hadoop目录
#下载 
wget http://http://apache.claz.org/hadoop/common/hadoop-3.2.1//hadoop-3.2.1.tar.gz
#解压到 /usr/local 目录
sudo tar -xzvf hadoop-3.2.1.tar.gz -C /usr/local 
#修改hadoop的文件权限
sudo chown -R ubuntu:ubuntu hadoop-3.2.1.tar.gz
#重命名文件夹 
sudo mv hadoop-3.2.1 hadoop
  1. 配置Master节点的Hadoop环境变量

和配置JDK环境变量一样,编辑用户目录下的.profile文件, 添加Hadoop环境变量:

export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin 
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

执行 source .profile 让立即生效

  1. 配置Master节点

Hadoop 的各个组件均用XML文件进行配置, 配置文件都放在 /usr/local/hadoop/etc/hadoop 目录中:

  • core-site.xml:配置通用属性,例如HDFS和MapReduce常用的I/O设置等
  • hdfs-site.xml:Hadoop守护进程配置,包括namenode、辅助namenode和datanode等
  • mapred-site.xml:MapReduce守护进程配置
  • yarn-site.xml:资源调度相关配置

a. 编辑core-site.xml文件,修改内容如下:


 
 hadoop.tmp.dir
 file:/usr/local/hadoop/tmp
 Abase for other temporary directories.
 
 
 fs.defaultFS
 hdfs://master:9000
 

参数说明:

  • fs.defaultFS:默认文件系统,HDFS的客户端访问HDFS需要此参数
  • hadoop.tmp.dir:指定Hadoop数据存储的临时目录,其它目录会基于此路径, 建议设置到一个足够空间的地方,而不是默认的/tmp下

如没有配置hadoop.tmp.dir参数,系统使用默认的临时目录:/tmp/hadoo-hadoop。而这个目录在每次重启后都会被删除,必须重新执行format才行,否则会出错。

b. 编辑hdfs-site.xml,修改内容如下:


 
 dfs.replication
 3
 
 
 dfs.name.dir
 /usr/local/hadoop/hdfs/name
 
 
 dfs.data.dir
 /usr/local/hadoop/hdfs/data
 

参数说明:

  • dfs.replication:数据块副本数
  • dfs.name.dir:指定namenode节点的文件存储目录
  • dfs.data.dir:指定datanode节点的文件存储目录

c. 编辑mapred-site.xml,修改内容如下:


 
 mapreduce.framework.name
 yarn
 
 
 mapreduce.application.classpath
 $HADOOP_HOME/share/hadoop/mapreduce/*:$HADOOP_HOME/share/hadoop/mapreduce/lib/*
 

d. 编辑yarn-site.xml,修改内容如下:



 
 yarn.nodemanager.aux-services
 mapreduce_shuffle
 
 
 yarn.resourcemanager.hostname
 master
 
 
 yarn.nodemanager.env-whitelist
 JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME
 

e. 编辑workers, 修改内容如下:

slave1
slave2

配置worker节点

  1. 配置Slave节点

将Master节点配置好的Hadoop打包,发送到其他两个节点:

# 打包hadoop包
tar -cxf hadoop.tar.gz /usr/local/hadoop
# 拷贝到其他两个节点
scp hadoop.tar.gz ubuntu@slave1:~
scp hadoop.tar.gz ubuntu@slave2:~

在其他节点加压Hadoop包到/usr/local目录

sudo tar -xzvf hadoop.tar.gz -C /usr/local/

配置Slave1和Slaver2两个节点的Hadoop环境变量:

export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin 
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

启动集群

  1. 格式化HDFS文件系统

进入Master节点的Hadoop目录,执行一下操作:

bin/hadoop namenode -format

格式化namenode,第一次启动服务前执行的操作,以后不需要执行。

截取部分日志(看第5行日志表示格式化成功):

2019-11-11 13:34:18,960 INFO util.GSet: VM type = 64-bit
2019-11-11 13:34:18,960 INFO util.GSet: 0.029999999329447746% max memory 1.7 GB = 544.5 KB
2019-11-11 13:34:18,961 INFO util.GSet: capacity = 2^16 = 65536 entries
2019-11-11 13:34:18,994 INFO namenode.FSImage: Allocated new BlockPoolId: BP-2017092058-10.101.18.21-1573450458983
2019-11-11 13:34:19,010 INFO common.Storage: Storage directory /usr/local/hadoop/hdfs/name has been successfully formatted.
2019-11-11 13:34:19,051 INFO namenode.FSImageFormatProtobuf: Saving image file /usr/local/hadoop/hdfs/name/current/fsimage.ckpt_0000000000000000000 using no compression
2019-11-11 13:34:19,186 INFO namenode.FSImageFormatProtobuf: Image file /usr/local/hadoop/hdfs/name/current/fsimage.ckpt_0000000000000000000 of size 401 bytes saved in 0 seconds .
2019-11-11 13:34:19,207 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
2019-11-11 13:34:19,214 INFO namenode.FSImage: FSImageSaver clean checkpoint: txid=0 when meet shutdown.
  1. 启动Hadoop集群
sbin/start-all.sh

启动过程遇到的问题与解决方案:

a. 错误:master: rcmd: socket: Permission denied

解决

执行 echo "ssh" > /etc/pdsh/rcmd_default

b. 错误:JAVA_HOME is not set and could not be found.

解决

修改三个节点的hadoop-env.sh,添加下面JAVA环境变量

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
  1. 使用jps命令查看运行情况

Master节点执行输出:

19557 ResourceManager
19914 Jps
19291 SecondaryNameNode
18959 NameNode

Slave节点执行输入:

18580 NodeManager
18366 DataNode
18703 Jps
  1. 查看Hadoop集群状态
hadoop dfsadmin -report

查看结果:

Configured Capacity: 41258442752 (38.42 GB)
Present Capacity: 5170511872 (4.82 GB)
DFS Remaining: 5170454528 (4.82 GB)
DFS Used: 57344 (56 KB)
DFS Used%: 0.00%
Replicated Blocks:
 Under replicated blocks: 0
 Blocks with corrupt replicas: 0
 Missing blocks: 0
 Missing blocks (with replication factor 1): 0
 Low redundancy blocks with highest priority to recover: 0
 Pending deletion blocks: 0
Erasure Coded Block Groups: 
 Low redundancy block groups: 0
 Block groups with corrupt internal blocks: 0
 Missing block groups: 0
 Low redundancy blocks with highest priority to recover: 0
 Pending deletion blocks: 0

-------------------------------------------------
Live datanodes (2):

Name: 10.101.18.24:9866 (slave2)
Hostname: slave2
Decommission Status : Normal
Configured Capacity: 20629221376 (19.21 GB)
DFS Used: 28672 (28 KB)
Non DFS Used: 16919797760 (15.76 GB)
DFS Remaining: 3692617728 (3.44 GB)
DFS Used%: 0.00%
DFS Remaining%: 17.90%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Mon Nov 11 15:00:27 CST 2019
Last Block Report: Mon Nov 11 14:05:48 CST 2019
Num of Blocks: 0


Name: 10.101.18.8:9866 (slave1)
Hostname: slave1
Decommission Status : Normal
Configured Capacity: 20629221376 (19.21 GB)
DFS Used: 28672 (28 KB)
Non DFS Used: 19134578688 (17.82 GB)
DFS Remaining: 1477836800 (1.38 GB)
DFS Used%: 0.00%
DFS Remaining%: 7.16%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Mon Nov 11 15:00:24 CST 2019
Last Block Report: Mon Nov 11 13:53:57 CST 2019
Num of Blocks: 0
  1. 关闭Hadoop
sbin/stop-all.sh

Web查看Hadoop集群状态

在浏览器输入 http://10.101.18.21:9870 ,结果如下:

在浏览器输入 http://10.101.18.21:8088 ,结果如下:

关注公众号:JAVA九点半课堂,回复【资料】获取2T最新技术资料,每天还有技术分享,我们一起进步,谢谢!

相关推荐

F5负载均衡器如何通过irules实现应用的灵活转发?

F5是非常强大的商业负载均衡器。除了处理性能强劲,以及高稳定性之外,F5还可以通过irules编写强大灵活的转发规则,实现web业务的灵活应用。irules是基于TCL语法的,每个iRules必须包含...

映射域名到NAS

前面介绍已经将域名映射到家庭路由器上,现在只需要在路由器上设置一下端口转发即可。假设NAS在内网的IP是192.168.1.100,NAS管理端口2000.你的域名是www.xxx.com,配置外部端...

转发(Forward)和重定向(Redirect)的区别

转发是服务器行为,重定向是客户端行为。转发(Forward)通过RequestDispatcher对象的forward(HttpServletRequestrequest,HttpServletRe...

SpringBoot应用中使用拦截器实现路由转发

1、背景项目中有一个SpringBoot开发的微服务,经过业务多年的演进,代码已经累积到令人恐怖的规模,亟需重构,将之拆解成多个微服务。该微服务的接口庞大,调用关系非常复杂,且实施重构的人员大部分不是...

公司想搭建个网站,网站如何进行域名解析?

域名解析是将域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站的一种服务。IP地址是网络上标识站点的数字地址,为方便记忆,采用域名来代替IP地址标识站点地址。域名解析就是域名到IP地址的转...

域名和IP地址什么关系?如何通过域名解析IP?

一般情况下,访客通过域名和IP地址都能访问到网站,那么两者之间有什么关系吗?本文中科三方针对域名和IP地址的关系和区别,以及如何实现域名与IP的绑定做下介绍。域名与IP地址之间的关系IP地址是计算机的...

分享网站域名301重定向的知识

网站域名做301重定向操作时,一般需要由专业的技术来协助完成,如果用户自己在维护,可以按照相应的说明进行操作。好了,下面说说重点,域名301重定向的操作步骤。首先,根据HTTP协议,在客户端向服务器发...

NAS外网到底安全吗?一文看懂HTTP/HTTPS和SSL证书

本内容来源于@什么值得买APP,观点仅代表作者本人|作者:可爱的小cherry搭好了NAS,但是不懂做好网络加密,那么隐私泄露也会随时发生!大家好,这里是Cherry,喜爱折腾、玩数码,热衷于分享数...

ForwardEmail免费、开源、加密的邮件转发服务

ForwardEmail是一款免费、加密和开源的邮件转发服务,设置简单只需4步即可正常使用,通过测试来看也要比ImprovMX好得多,转发近乎秒到且未进入垃圾箱(仅以Mailbox.org发送、Out...

使用CloudFlare进行域名重定向

当网站变更域名的时候,经常会使用域名重定向的方式,将老域名指向到新域名,这通常叫做:URL转发(URLFORWARDING),善于使用URL转发,对SEO来说非常有用,因为用这种方式能明确告知搜索引...

要将端口5002和5003通过Nginx代理到一个域名上的操作笔记

要将端口5002和5003通过Nginx代理到域名www.4rvi.cn的不同路径下,请按照以下步骤配置Nginx:步骤说明创建或编辑Nginx配置文件通常配置文件位于/etc/nginx/sites...

SEO浅谈:网站域名重定向的三种方式

在大多数情况下,我们输入网站访问网站的时候,很难发现www.***.com和***.com的区别,因为一般的网站主,都会把这两个域名指向到同一网站。但是对于网站运营和优化来说,www.***.com和...

花生壳出现诊断域名与转发服务器ip不一致的解决办法

出现诊断域名与转发服务器ip不一致您可以:1、更改客户端所处主机的drs为223.5.5.5备用dns为119.29.29.29;2、在windows上进入命令提示符输入ipconfig/flush...

涨知识了!带你认识什么是域名

1、什么是域名从技术角度来看,域名是在Internet上解决IP地址对应的一种方法。一个完整的域名由两个或两个以上部分组成,各部分之间用英文的句号“.”来分隔。如“abc.com”。其中“com”称...

域名被跳转到其他网站是怎么回事

当你输入域名时被跳转到另一个网站,这可能是由几种原因造成的:一、域名可能配置了域名转发服务。无论何时有人访问域名,比如.com、.top等,都会自动重定向到另一个指定的URL,这通常是在域名注册商设...

取消回复欢迎 发表评论: