Hadoop HDFS 3.2的部署
之前写过HDFS 2.6的部署,最近项目中尝试使用最新的HDFS 3.2.1做离线存储,部署方式略有不同,所以这里再简单写一下,这里只涉及到存储因此不再配置yarn,只配置HDFS最基本的服务NameNode、DataNode、以及SecondaryNameNode,我这里用到的包是hadoop-3.2.1.tar.gz
部署之前主机名&hosts,防火墙,ssh互信,jdk这些都不用说了,一定要提前配置标准,jdk用1.8即可,我这里6台机器,计划是其中1个NameNode,1个SecondaryNameNode,6个都是DataNode,当然这里是最简单的配置没有做NameNode高可用,这个放到后来再写,由于hdfs每个节点配置都完全一样,所以在一个节点配置好发送到其他节点就可以啦,下面开始配置:
1). 解压hadoop到指定位置
tar -xvzf hadoop-3.2.1.tar.gz -C /opt
ln -s hadoop-3.2.1 hadoop
cd /opt/hadoop
同样这里软链接是惯用设置,然后开始配置
2). 编辑etc/hadoop/core-site.xml,在<configuration></configuration>填入下面的配置:
<property>
<name>fs.defaultFS</name>
<value>hdfs://cloud1:9001</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
fs.defaultFS和之前2.6配置一样,写namenode的主机名和自己定义的端口,由于9000有冲突,因此我这里用9001
io.file.buffer.size这个是写文件操作的缓冲区大小,默认是4096B,这里调大为128k
我这里配置上面两个就够了,另外还有临时文件目录hadoop.tmp.dir选项,需要也可以添加一下,完整的默认配置列表参考链接:https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/core-default.xml,对应当前目录下的share/doc/hadoop/hadoop-project-dist/hadoop-common/core-default.xml文件可以详细查看其它的参数
3). 编辑etc/hadoop/hdfs-site.xml,在<configuration></configuration>填入下面的配置:
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///data/dfs/name</value>
</property>
<property>
<name>dfs.hosts</name>
<value>/opt/hadoop/etc/hadoop/dfs.hosts</value>
</property>
<property>
<name>dfs.blocksize</name>
<value>268435456</value>
</property>
<property>
<name>dfs.namenode.handler.count</name>
<value>100</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///data/dfs/data</value>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>0.0.0.0:9870</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>file:///data/dfs/namesecondary</value>
</property>
dfs.namenode.name.dir 配置namenode数据目录,这个目录启动时会自动创建
dfs.hosts 这个配置允许连接到namenode的主机列表,默认允许所有的主机,其实为了安全可以配置上集群所有节点的地址,对于集群内部所有节点的访问不限制,然后再根据需要添加外部客户端机器等,这里直接在本地磁盘创建一个文件即可,里面直接罗列所有的主机名,我这里是和配置文件放到了一块,方便同步到其他节点
dfs.blocksize 单个block的大小,hdfs上传文件会把文件按照块打散,这里使用的就是默认值,为256M
dfs.namenode.handler.count namenode处理rpc请求的并发数,默认是100,如果有更多的datanode或者并发比较高,则这里可以调大
dfs.datanode.data.dir datanode数据的本地存储目录,如果有多块盘可以用逗号分隔多个目录,这个目录启动时会自动创建
dfs.namenode.http-address 配置namenode界面,默认值就是:0.0.0.0:9870
dfs.replication 配置文件存储的副本数,默认为3
dfs.namenode.checkpoint.dir 配置检查节点的数据目录,即secondarynamenode的数据目录,这个目录启动时会自动创建
完成的默认配置参考链接:https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml或当前目录下的文件share/doc/hadoop/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml
4). 配置etc/hadoop/hadoop-env.sh
必须配置的项是JAVA_HOME,如果安装java时已经配置到/etc/profile则可以不用配置,因为我这里是openjdk所以需要配置一下:export JAVA_HOME=/usr
HADOOP_HOME 建议配置一下,我这里是:export HADOOP_HOME=/opt/hadoop
HADOOP_LOG_DIR 日志目录,默认就是hadoop安装目录下的logs
HADOOP_PID_DIR hdfs服务的pid目录,默认是在/tmp
另外还有一些配置根据需要进行修改,当然上面这些配置都可以通过linux shell环境变量的方式设置,配置到/etc/profile或者/etc/profile.d/下面的变量文件中
export JAVA_HOME=/usr
export HADOOP_HOME=/opt/hadoop
export HADOOP_LOG_DIR=${HADOOP_HOME}/logs
export HADOOP_PID_DIR=/var/run
5). 分发节点 & 格式化namenode & 启动服务
配置完上面的这些hdfs就算基本设置好了,然后可以将目录发送到所有的其他节点,然后再每个机器分别启动对应的服务,比如我这里节点1是namenode服务,节点2是secondarynamenode服务,节点1~6都是datanode服务,其中namenode服务和secondarynamenode服务最好分开不同的节点启动,发送完成之后先格式化namenode:
bin/hdfs namenode -format
格式化只执行一次,之后不要再执行,然后在每个节点分别手动以守护方式启动服务即可:
# 启动namenode服务
bin/hdfs --daemon start namenode
# 启动secondarynamenode服务
bin/hdfs --daemon start secondarynamenode
# 启动datanode服务
bin/hdfs --daemon start datanode
这样就启动服务了,执行jps可以看到对应节点的对应的进程名,然后可以浏览器访问http://namenode ip:9870可以看到namenode的界面
单独停止服务也非常简单,只需要将上面命令的start改成stop即可
6). 统一启动
上面单独启动的方式可能比较麻烦,也可以使用sbin/start-dfs.sh和sbin/stop-dfs.sh统一启动和停止,启动之前要配置hdfs的用户,否则会报错找不到对应的配置,其实是推荐使用hdfs专用的用户来启动而不是用root来启动,上面为了方便直接用root配置的,正常来说应该有hdfs专门的用户才对,现在修改etc/hadoop/hadoop-env.sh配置用户:
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
为了方便这里都配置成root,然后编辑etc/hadoop/workers文件里面默认是localhost,要修改成所有datanode节点的列表,启动时脚本会自动读取这个文件来启动datanode节点,格式和上面咱们配置的dfs.hosts完全一样,配置好了之后,然后就可以执行 sbin/start-dfs.sh 直接启动整个集群了,注意这个脚本默认启动的secondarynamenode节点和namenode是同一个节点,如果想更换节点还需要手动的进行调整.
上面就是hadoop hdfs 3存储部分的基本配置了,经过上面配置就可以开始使用hdfs进行文件的存储读取等操作了,更多的配置以后再继续分享,部署参考文档:https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/ClusterSetup.html
Hadoop HDFS 3.2的部署的更多相关文章
- Apache Hadoop 2.9.2 的HDFS High Available模式部署
Apache Hadoop 2.9.2 的HDFS High Available 模式部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们知道,当NameNode进程挂掉后,可 ...
- Apache Hadoop集群离线安装部署(一)——Hadoop(HDFS、YARN、MR)安装
虽然我已经装了个Cloudera的CDH集群(教程详见:http://www.cnblogs.com/pojishou/p/6267616.html),但实在太吃内存了,而且给定的组件版本是不可选的, ...
- Hadoop HDFS NFS GateWay部署深入具体解释
目的:通过挂载的方式,能够相似訪问本地磁盘的方式一样的訪问Hadoop文件.简单.方便.快捷. 0.系统版本号&hadoop版本号 1)系统版本号 [root@WEB-W031 sbin]# ...
- Hadoop HDFS (3) JAVA訪问HDFS
如今我们来深入了解一下Hadoop的FileSystem类. 这个类是用来跟Hadoop的文件系统进行交互的.尽管我们这里主要是针对HDFS.可是我们还是应该让我们的代码仅仅使用抽象类FileSyst ...
- Hadoop HDFS分布式文件系统设计要点与架构
Hadoop HDFS分布式文件系统设计要点与架构 Hadoop简介:一个分布式系统基础架构,由Apache基金会开发.用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群 ...
- Hadoop 2.6.0分布式部署參考手冊
Hadoop 2.6.0分布式部署參考手冊 关于本參考手冊的word文档.能够到例如以下地址下载:http://download.csdn.net/detail/u012875880/8291493 ...
- hadoop集群搭建--CentOS部署Hadoop服务
在了解了Hadoop的相关知识后,接下来就是Hadoop环境的搭建,搭建Hadoop环境是正式学习大数据的开始,接下来就开始搭建环境!我们用到环境为:VMware 12+CentOS6.4 hadoo ...
- 从 RAID 到 Hadoop Hdfs 『大数据存储的进化史』
我们都知道现在大数据存储用的基本都是 Hadoop Hdfs ,但在 Hadoop 诞生之前,我们都是如何存储大量数据的呢?这次我们不聊技术架构什么的,而是从技术演化的角度来看看 Hadoop Hdf ...
- Hadoop生态圈-zookeeper完全分布式部署
Hadoop生态圈-zookeeper完全分布式部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客部署是建立在Hadoop高可用基础之上的,关于Hadoop高可用部署请参 ...
- 大数据 - hadoop - HDFS+Zookeeper实现高可用
高可用(Hign Availability,HA) 一.概念 作用:用于解决负载均衡和故障转移(Failover)问题. 问题描述:一个NameNode挂掉,如何启动另一个NameNode.怎样让两个 ...
随机推荐
- Java面向对象(中)--super/多态/向下转型/equals/toString/包装类/单元测试工具
java对象 方法重写 子类继承父类以后,可以对父类同名同参数的方法,进行覆盖操作 重写后,当创建子类对象以后,通过子类对象调用子父类中同名同参数的方法时,执行的是子类重写父类的方法. 如何区分方法重 ...
- docsify + GitHub Page免费搭建个人博客
docsify生成文档 docsify是一个动态生成文档网站的工具.通过编辑MarkDown文件就能实现简约清爽的文档页面. 先在Github创建项目 创建项目成功后,把项目克隆到本地(以自己的实际地 ...
- 工作记录:Stylus基础教程及应用
前言 传统CSS的缺陷 css的可重用性差.代码冗余量大.不支持语言特性如变量循环及方法等(虽然css也在慢慢支持,比如现在的css变量等,但明显这些远远不够). 三大预处理 于是预处理器出现了: 2 ...
- Web Audio API 第3章 音量和响度
此章介绍的科普物理声音知识相当有用,编程的反而涉及的少 音量和响度 Loudness 响度 注:根据<韦氏词典>,响度是"一种声音的属性,它决定了所产生的听觉感觉的大小,主要取决 ...
- ASCII编码的全面介绍
1. ASCII编码的定义和历史 ASCII(American Standard Code for Information Interchange)是一种用于将文本字符转换为数字编码的标准,最初由美国 ...
- WPF实现树形表格控件(TreeListView)
前言 本文将探讨如何利用WPF框架实现树形表格控件,该控件不仅能够有效地展示复杂的层级数据,还能够提供丰富的个性化定制选项.我们将介绍如何使用WPF提供的控件.模板.布局.数据绑定等技术来构建这样一个 ...
- vue3 快速入门系列 —— 基础
vue3 快速入门系列 - 基础 前面我们已经用 vue2 和 react 做过开发了. 从 vue2 升级到 vue3 成本较大,特别是较大的项目.所以许多公司对旧项目继续使用vue2,新项目则使用 ...
- #KD-Tree#洛谷 3710 方方方的数据结构
题目 区间加,区间乘,单点查询,撤销修改 分析 由于可以离线,不妨把下标看成第一维,时间看成第二维,那么修改操作相当于在一个矩形上加或者乘, 不妨把查询的节点看作是二维平面上的点,这样实际上就可以用 ...
- #斜率优化,二分#CF631E Product Sum
题目 有一个数列 \(a\),其权值为 \(\sum_{i=1}^ni*a_i\), 现在可以任意选择其中一个数字扔到任意位置,使权值和最大. \(n\leq 2*10^5,|a_i|\leq 10^ ...
- #dp#洛谷 3473 [POI2008] UCI-The Great Escape JZOJ 4019 Path
题目 \(n*m\)的地图,计算从\((n,1)\)到第\(x\)列的第\(y\)行的路径条数\(\bmod k\) , 走过的点不能再走,转弯只能向右转.转弯完之后必须往前走一格 分析 可以发现,走 ...