HDFS

hadoop 集群调优实践总结

不问归期 提交于 2020-02-10 03:12:37
调优概述 # 几乎在很多场景,MapRdeuce或者说分布式架构,都会在IO受限,硬盘或者网络读取数据遇到瓶颈.处理数据瓶颈CPU受限.大量的硬盘读写数据是海量数据分析常见情况. IO受限例子: 索引 分组 数据倒入导出 数据移动和转换 CPU受限例子: 聚类/分类 复杂的文本挖掘 特征提取 用户画像 自然语言处理 我们需要从硬件规划和软件规划等多方面结合实现性能和效率的提升。 硬件规划 # 评估集群规模 # 我们需要搭建多少节点的hadoop集群?回答这个问题考虑的因素比较多:预算?数据量?计算资源? 需要多少计算资源可能不是特别好评估,推荐横向扩展,随业务规模和应用发展再考虑扩展。开始可以就按照数据量来评估数据规模,估计一下每天的数据增量?保存数据的周期是多少?有没有冷数据方案? 假设每天增长的数据为600G、3备份存储,以一年规划为例,大概存储为600G 3 360天=633T, 再考虑增加%20的预留,考虑未来数据增长的趋势,考虑应用计算等空间需求。为节省空间可考虑压缩存储(大概可以节省70%空间)。 同时考虑一定冗余量,如果集群一部分节点不可用也要保证业务正常使用(根据集群规模评估冗余比例)。 然后结合节点硬件规划和预算,确定集群规模。假如我们需要650T存储,可以采用30台12 x 2TB的存储配置或者 60台6 x 2TB配置,但是节点数量翻翻

hadoop配置文件加载顺序

こ雲淡風輕ζ 提交于 2020-02-10 02:44:34
  用了一段时间的hadoop,现在回来看看源码发现别有一番味道,温故而知新,还真是这样的    在使用hadoop之前我们需要配置一些文件,hadoop-env.sh,core-site.xml,hdfs-site.xml,mapred-site.xml。那么这些文件在什么时候被hadoop使用?    一般的在启动hadoop的时候使用最多就是start-all.sh,那么这个脚本都干了些什么? start-all.sh # Start all hadoop daemons. Run this on master node. #特别的地方时要在master节点上启动hadoop所有进程 bin=`dirname "$0"` bin=`cd "$bin"; pwd` #bin=$HADOOP_HOME/bin if [ -e "$bin/../libexec/hadoop-config.sh" ]; then . "$bin"/../libexec/hadoop-config.sh else . "$bin/hadoop-config.sh" fi # start dfs daemons "$bin"/start-dfs.sh --config $HADOOP_CONF_DIR # start mapred daemons "$bin"/start-mapred.sh -

hdfs格式化hadoop namenode -format错误

随声附和 提交于 2020-02-10 02:36:11
在对HDFS格式化,执行 hadoop namenode -format命令时,出现未知的主机名的问题,异常信息如下所示: [shirdrn@localhost bin]$ hadoop namenode -format 11/06/22 07:33:31 INFO namenode.NameNode: STARTUP_MSG: /************************************************************ STARTUP_MSG: Starting NameNode STARTUP_MSG: host = java.net. UnknownHostException: localhost.localdomain: localhost.localdomain STARTUP_MSG: args = [-format] STARTUP_MSG: version = 0.20.0 STARTUP_MSG: build = https://svn.apache.org/repos/asf/ hadoop /core/branches/branch-0.20 -r 763504; compiled by 'ndaley' on Thu Apr 9 05:18:40 UTC 2009 ********************************

MapReduce编程实战(1)--实现wordcount词频统计

倾然丶 夕夏残阳落幕 提交于 2020-02-09 21:12:42
摘要: 一个WordCount单词统计程序为实例,详细演示了如何编写MapReduce程序代码以及如何打包运行程序。 参考资料: Api 文档地址: http://hadoop.apache.org/docs/current/api/index.html maven资源库: https://mvnrepository.com/repos/central 用于配置pom的时候查询资源 1.创建maven项目 创建maven项目,项目名hdfs ##这里我用的文章“java操作hdfs”的项目hdfs pom.xml文件: //与文章“java操作hdfs”的项目一样。 2.编写WordCount类 在该项目包com.scitc.hdfs中新建WordCount.java类,代码如下: package com.scitc.hdfs; import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import

hdfs

时光怂恿深爱的人放手 提交于 2020-02-09 01:52:48
1.实践 进入/app/hadoop-1.1.2 ,新建文件夹input,在文件夹下 vi daysn.txt daysn wu is handsome very handsome wow so so handsome yes he is 然后保存。待会咋们把这个daysn.txt上传到hdfs中去。在hdfs中建立文件夹/upload hadoop fs -mkdir /upload hadoop fs -ls / 上传使用copyFromLocal命令 hadoop fs -copyFromLocal daysn.txt /upload/daysn.txt hadoop fs -ls / 接下来我们试着用代码读取hdfs的文件。 再在app/hadoop-1.1.2下面建立文件夹classes。进入classes目录,vi Test.java,输入以下代码。 import java.io.InputStream; import java.net.URI; import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.*;import org.apache.hadoop.io.IOUtils; public class Test{ public static void main(String[]

Hadoop集群搭建

蓝咒 提交于 2020-02-09 00:28:44
1.集群简介 Hadoop集群具体来说包括两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起。 HDFS集群: 负责海量数据的存储,集群中的角色主要有NameNode/DataNode YARN集群: 负责海量数据运算时的资源调度,集群中的角色主要有ResourceManage/NodeManager 2.服务器准备 操作系统: 虚拟机系统 节点 域名/IP地址 Centos6 NameNode/ResourceManage Master/192.168.1.10 Centos6 DataNode/NodeManageer Salve11/192.168.1.11 Centos6 DataNode/NodeManageer Salve12/192.168.1.12 Centos6 DataNode/NodeManageer Salve13/192.168.1.13 Java版本 java version "1.8.0_151" Hadoop版本 3.网络环境准备 3.1.设置IP地址 分别设置节点IP,在每个节点上执行一下步骤: vi /etc/sysconfig/network-scripts/ifcfg-eth0 修改如下: DEVICE=eth0 HWADDR=08:00:27:53:7E:9D TYPE=Ethernet UUID=c8127b91

Hdfs

给你一囗甜甜゛ 提交于 2020-02-08 18:49:13
1介绍 设计思想是分而治之,将大文件、大批量文件,分布式存放在大量服务器上,以便于采取分而治之的方式对海量数据进行运算分析。 在大数据系统中的应用是为各类分布式运算框架提供数据存储服务。 2.特性 hdfs中的文件在物理上是分块存储(block),块的大小可以通过配置参数(dfs.blocksize)来规定,默认大小在hadoop2.x版本中是128M,老版本是64M. hdfs文件系统会给客户端提供一个统一的抽象目录树,客户端通过路径来访问文件,形如:hdfs://namenode:port/dir-a/dir-b/file.data 目录结构及文件分块位置信息(元数据)的管理由namenode节点承担,namenode是hdfs集群主节点,负责维护整个hdfs文件系统的目录树,以及每一个路径(文件)所对应的block块信息(block的id及所在的datanode服务器) 文件的各个block的存储管理由datanode节点承担,datanode是hdfs集群从节点,每一个block都可以在多个datanode上存储多个副本,副本数量也可以通过参数设置dfs.replication,默认是3. hdfs是设计成适应一次写入,多次读出的场景,且不支持文件的修改,适合用来做数据分析,并不适合用来做网盘应用,因为不便修改,延迟大,网络开销大,成本太高。 3.shell命令行客户端操作

大数据基础之hdfs3

回眸只為那壹抹淺笑 提交于 2020-02-08 13:43:04
1、hdfs的副本的配置 修改hdfs-site.xml文件 <!-- 注释配置数据块的冗余度,默认是3 --> <property> <name>dfs.replication</name> <value>1</value> </property> <!--注释配置HDFS的权限检查,默认是true--> <property> <name>dfs.permissions</name> <value>false</value> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>hsiehchou122:50090</value> </property> 需要同步到其它机器: scp hdfs-site.xml hsiehchou122:$PWD scp hdfs-site.xml hsiehchou123:$PWD scp hdfs-site.xml hsiehchou124:$PWD 这里我划重点(亲自经历) 如果原来的分布式hadoop集群的主节点有Secondary NameNode,需要配置到其他节点,因为如果主节点挂了,其也是挂了,它的作用是在HDFS中提供一个检查点,相当于NameNode的助手节点 职责是:合并NameNode的edit

Hadoop——HDFS读写流程

青春壹個敷衍的年華 提交于 2020-02-08 08:12:59
HDFS写流程(也就是client上传文件到HDFS的流程): Client和NN连接创建文件元数据 NN判定元数据是否有效,比如判定client有没有权限创建文件,当前HDFS里有没有相同的同级同名文件 NN触发副本放置策略,返回一个有序的DN列表 Client和DN建立Pipeline连接(为降低带宽消耗和上传延时,client会根据距离,挑选一个与自己最近的DN建立连接) Client将block以更小的packet(64KB)的形式发送,并使用更小的数据chunk(512B)+ chucksum(校验和,4B)(每一个chuck对应一个chucksum)填充这个packet,每填充满一个packet,就发送这个packet Client将packet放入发送队列dataqueue中,并向第一个DN发送 第一个DN收到packet后本地保存并发送给第二个DN 第二个DN收到packet后本地保存并发送给第三个DN,这一个过程中,上游节点同时发送下一个packet,也就是第一个DN给第二个DN发送packet时,client可以同时并行地给第一个DN发第二个packet。这种形式就是流水线的形式,并且各个DN的传输过程是并行的。 Hdfs使用这种传输方式,副本数对于client是透明的,也就是client并不需要管要发多少副本,只需要给跟它连接的那个DN发送就行

Spark Socket Timeout issue while writing to hdfs

☆樱花仙子☆ 提交于 2020-02-08 03:11:19
问题 I am trying to process a hive query and write to HDFS as ORC format. But I am getting a timeout issue. I checked in spark-default.conf ,but there is no timeout settings, should i add it? Please let me know the changes to make temp = sqlContext.sql(""" query """) temp.write.format("orc").option("header", "true").save("hdfs://app/Quality/spark_test/") Attached is the log of the error : org.apache.hadoop.net.ConnectTimeoutException: Call From .. to app:8020 failed on socket timeout exception: