0 hadoop 集群:
集群部署方式: 将map任务等直接运行于要处理的数据所存储的HDFS的数据节点上,
实现数据处理的本地性,进而大大提高整个过程的完成效率。
核心进程: 整个集群共有5类运行的核心进程,它们是MapReduce集群的JobTracker和TaskTracker,以及HDFS集群的NameNode、DataNode和SecondaryNameNode
工作进程: 集群中除了上述5个核心进程之外,还包含许多按需启动的任务类进程(如map任务 reduce任务)
这些构成了集群的工作进程
集群规模: 小于50个节点都属于小规模集群
小规模下,可以将NameNode与JobTracker合并于同一个节点上运行。
集群主要包含内容组件: kerberos认证,HDFS文件系统,文件系统的append追加,security、YARN和HDFS联合(HDFS federation),mapreduce;
使用集群提供的应用方向:
推荐系统,金融 分析,自然语言处理,数据挖掘,影响处理,市场预测,日志分析
1 集群对jdk的要求:
hadoop基于java开发,依赖jdk,
并且Hadoop的许多功能依赖于Java 6及以后的版本才提供的特性。
http://wiki.apache.org/hadoop/HadoopJavaVersions页面给出了Hadoop目前几大著名企业实现的Hadoop集群中所使用的JDK版本,
无论如何,一个生产环境的Hadoop集群应该运行在64位的操作系统上,JDK等也要使用相应的64位版本,否则,单JVM进程将无法使用大于2GB以上的内存。
总结就是: 安装>=1.6版本的64位jdk
2 集群多用户的解释:
在用过 cdh的hadoop集群下,会发现集群有很多用户,比如hbase用户,hbase用户,zookeeper用户,
hdfs用户,mapreduce用户等,出现这么多用户解释如下:
一个完整的Hadoop集群包含了MapReduce集群和HDFS集群,MapReduce集群包含JobTracker和TaskTracker两类进程和许多按需启动的任务类进程(如map任务,reduce任务), HDFS集群包含NameNode、SecondaryNameNode和DataNode三类进程。 安全起见,应该以普通用户的身份启动这些进程,并且MapReduce集群的进程与HDFS集群的进程还应该使用不同的用户, 比如分别使用mapred和hdfs用户(cdh就是这么干的)。使用CDH的RPM包安装Hadoop时,这些用户都会被自动创建(还会创建zookeeper,sqoop,hbase等用户), 如果基于tar包安装,则需要手动创建这些用户。 Hadoop的每一个进程都会访问系统的各类资源,然而,Linux系统通过PAM限定了用户的资源访问能力,如可打开的文件数(默认为1024个)及可运行的进程数等, 这此默认配置在一个略具规模的Hadoop集群中均会带来问题。因此,需要为mapred和hdfs用户修改这些限制,这可以在/etc/security/limits.conf中进行。修改结果如下。 # Allow users hdfs, mapred, and hbase to open 32k files. The # type '-' means both soft and hard limits. # # See 'man 5 limits.conf' for details. # user type resource value hdfs - nofile 32768 mapred - nofile 32768
3 集群中 为什么主节点到从节点要ssh免密码登录:
a) 方便主节点快速免密码登录子节点后,远程启动子节点上的hadoop进程
b) 并执行监控等额外的管理工作。
4 hadoop分布式模型三类型简介:
Hadoop通常有三种运行模式:本地(独立)模式、伪分布式(Pseudo-distributed)模式和完全分布式(Fully distributed)模式。 安装完成后,Hadoop的默认配置即为本地模式,此时Hadoop使用本地文件系统而非分布式文件系统,而且其也不会启动任何Hadoop守护进程,Map和Reduce任务都作为同一进程的不同部分来执行。因此,本地模式下的Hadoop仅运行于本机。此种模式仅用于开发或调试MapReduce应用程序但却避免了复杂的后续操作。 伪分布式模式下,Hadoop将所有进程运行于同一台主机上,但此时Hadoop将使用分布式文件系统,而且各jobs也是由JobTracker服务管理的独立进程。同时,由于伪分布式的Hadoop集群只有一个节点,因此HDFS的块复制将限制为单个副本,其secondary-master和slave也都将运行于本地主机。此种模式除了并非真正意义的分布式之外,其程序执行逻辑完全类似于完全分布式,因此,常用于开发人员测试程序执行。 要真正发挥Hadoop的威力,就得使用完全分布式模式。由于ZooKeeper实现高可用等依赖于奇数法定数目(an odd-numbered quorum),因此,生产环境中,完全分布式环境需要至少三个节点。
5 hadoop集群配置文件和作用:
hadoop-env.sh 定义java配置信息
core-site.xml 定义namenode节点和默认文件系统访问的uri地址,此文件作用于全部进程
hdfs-site.xml 定义hdfs集群属性
mapred-site.xml 定义mapreduce集群属性 主要是指定jobtracker节点
masters: 定义secondarynamenode
slaves: 定义从节点是哪些机器
每个文件详细说明:
hadoop-env.sh:
用于为Hadoop指定运行时使用的JDK、各进程的JDK属性、PID文件及日志文件的保存目录等
core-site.xml:
- <?xml version="1.0" encoding="UTF-8"?>
- <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
- <configuration>
- <property>
- <name>hadoop.tmp.dir</name>
- <value>/hadoop/temp</value>
- </property>
- <property>
- <name>fs.default.name</name>
- <value>hdfs://master:9000</value>
- </property>
- </configuration>
hadoop.tmp.dir: 存放 MAP任务的中间数据 名称空间镜像 和 编辑日志,默认为/tmp/hadoop-${username}
要保证运行Hadoop进程的用户对其具有全部访问权限。
fs.default.name: 指定NameNode的RPC服务器监听的地址,默认端口是8020, 定义HDFS的名称节点和其默认的文件系统
hdfs-site.xml:
HDFS集群进程有许多属性可以定义其工作路,比如
dfs.block.size
<property>
<name>dfs.block.size</name>
<value>67108864</value> 64M
<description>The default block size for new files.</description>
</property>
dfs.name.dir属性定义的HDFS元数据持久存储路径默认为${hadoop.tmp.dir}/dfs/name
fs.data.dir属性定义的DataNode用于存储数据块的目录路径默认为${hadoop.tmp.dir}/dfs/data
fs.checkpoint.dir属性定义的SecondaryNameNode用于存储检查点文件的目录默认为${hadoop.tmp.dir}/dfs/namesecondary
dfs.replication 定义副本个数
如下为最简单的写法:
- <?xml version="1.0" encoding="UTF-8"?>
- <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
- <configuration>
- <property>
- <name>dfs.replication</name>
- <value>1</value>
- </property>
- </configuration>
mapred-site.xml:
其下主要配置参数:
mapred.job.trakcer:
JobTracker监听的地址(或主机名)和端口(默认为8021),与前面的fs.default.name属性的值不同的是,
这不是一个URI,而仅一个“主机-端口”组
mapred.local.dir: 用于指定MapReduce作业运行过程中的中间数据,这个目录一定要很大,
默认值为${hadoop.tmp.dir}/mapred/local
mapred.job.tracker可以接受多个以逗号分隔路径列表作为其值,并会以轮流的方式将数据分散存储在这些文件系统上,
因此指定位于不同磁盘上的多个文件系统路径可以分散数据I/O
mapred.system.dir: 各TaskTracker保存共享数据的路径, 默认值为${hadoop.tmp.dir}/mapred/system
简答写法:
- <?xml version="1.0"?>
- <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
- <configuration>
- <property>
- <name>mapred.job.tracker</name>
- <value>master:8021</value>
- </property>
- </configuration>
上述配置文件下路径的总结:
{hadoop.tmp.dir} ---> core-site.xml配置,定义了 数据存储节点 mapreduce中间处理数据存放位置 名称节点image edit的路径,如下图:
6 启动命令 start-dfs.sh start-mapred.sh start-all.sh hadoop-daemon.sh 的区别
使用这类脚本启动Hadoop集群,其需要当前主机的当前用户能够通过ssh服务以基于密钥认证的方式访问任何一个从节点.
在NameNode和JobTracker运行于同一主机的场景中时,start-all.sh等效于 start-dfs.sh start-mapred.sh
hadoop-daemon.sh: 用于集群不停止下,动态增加/删除节点,做法如下
.动态的增加一个hadoop节点 2.1 配置新节点的环境(eg:机器名 jdk hadoop ssh 机器名和ip对应关系) 2.2 把新节点的hostname配置到主节点的slaves文件中 2.3 在新节点,启动进程 hadoop-daemon.sh start datanode hadoop-daemon.sh start tasktracker 2.4 在主节点执行脚本 hadoop dfsadmin -refreshNodes 通知nomenode(通知老大我来了)
7 集群进程监听的地址和端口
Hadoop启动时会运行两个服务器进程,一个为用于Hadoop各进程之间进行通信的RPC服务器,
另一个是提供了便于管理员查看Hadoop集群各进程相关信息页面的HTTP服务器。
用于定义各RPC服务器所监听的地址和端口的属性有如下几个:
fs.default.name:定义HDFS的NameNode用于提供URI所监听的地址和端口,默认端口为8020;
dfs.datanode.ipc.address:DataNode上RPC服务器监听的地址和端口,默认为0.0.0.0:50020;
mapred.job.tracker:JobTracker的PRC服务器所监听的地址和端口,默认端口为8021;
mapred.task.tracker.report.address:TaskTracker的RPC服务器监听的地址和端口;TaskTracker的子JVM使用此端口与TaskTracker进行通信,
它仅需要监听在本地回环地址127.0.0.1上,因此可以使用任何端口;只有在当本地没有回环接口时才需要修改此属性的值;
除了RPC服务器之外,DataNode还会运行一个TCP/IP服务器用于数据块传输,
其监听的地址和端口可以通过dfs.datanode.address属性进行定义,默认为0.0.0.0:50010。
可用于定义各HTTP服务器的属性有如下几个:
mapred.job.tracker.http.addrss:JobTracker的HTTP服务器地址和端口,默认为0.0.0.0:50030;
mapred.task.tracker.http.address:TaskTracker的HTTP服务器地址和端口,默认为0.0.0.0:50060;
dfs.http.address:NameNode的HTTP服务器地址和端口,默认为0.0.0.0:50070;
dfs.datanode.http.address:DataNode的HTTP服务器地址和端口,默认为0.0.0.0:50075;
dfs.secondary.http.address:SecondaryNameNode的HTTP服务器地址和端口,默认为0.0.0.0:50090
上述端口,感觉如下4个更有用:
1 8020 namenode的rpc端口 在core-site.xml设置 2 8021 jobtracker的rpc监听端口 在mapred-site.xml设置 3 50070 namenode的http服务器端口 4 50030 jobtracker的http服务器端口
8 和hive hbase cdh avro R mahout 关系
hadoop 编写map-reduce代码增加了入行门槛
hive: facebook产品让 mapreduce不在是贵族产品 走向了千家万户,但是依旧不能实时
hive能否修改数据? ----> hdfs不支持修改数据因此hive依旧不支持修改数据
hive总结一句话: hive是构建在mapreduce上以类SQL方式提供的降低入行大数据的一个工具,不支持修改hdfs文件
hbase: 可以当然也可以不构建在hdfs上,但是一般他就是设计成构建在hdfs上的
hbase能够在原有的hdfs集群上在安装一个控制节点,同时在每一个hdfs节点上提供一个进程(hbase工作进程)
hbase工作进程是说数据别直接在hdfs上存,而是存在hbase中,hbase决定怎么存在hdfs上,hbase此时就成了hdfs
的客户端,hbase自己知道怎么和hdfs交互,以及把数据存在哪些节点上,更重要的是基于hbase能实现数据的修改。
hbase以类似表的形式让你能够随时插入数据,修改,删除数据,但是hbase不是RDBMS(关系型数据库) 而是稀疏格式的
nosql存储方案,有行的概念,列数不固定,并且多版本,并且不支持事务。
因此有了 hbase之后,hadoop也能支持数据修改了,只不过不是实时的。
如果用到事务,同时是海量数据处理,支持一些简单操作的时候,nosql是非常优良的解决方案。
hbase总结一句话: hbase是构建在hdfs上的支持动态插入,修改,删除hdfs数据的一套机制,是nosql列数据库
CDH: cloudear发布的hadoop生态,全称是cloudera distribute include hadoop,
包含三个产品: cdh(集群) cloudera manager(安装集群和管理集群的界面) cloudear support(技术支持)
将hadoop作者吸收过去做了股东和技术顾问,并且负责将各个生态
的子版本兼容调制好后整合在一起发布出来, 目前给hadoop社区上给hadoop贡献最多的依旧是Yahoo
mahout: hadoop集群的处理结果拿来作为机器智能学习
R: 工作在hadoop集群上 利用hadoop的处理能力实现数据统计和分析 (统计领域实现编程的基本都在使用)
avro : 数据序列化系统 hadoop原作者主导开发的一套系统
不能序列化的数据将无法通过网络发送,集群中传送数据,必须是序列化的数据能够发送,到达目的地后能合并回来 avro是hadoop针对google的(protocol buffer 序列反序列功能)所做的的实现。
相关推荐
赠送jar包:hbase-hadoop-compat-1.1.3.jar; 赠送原API文档:hbase-hadoop-compat-1.1.3-javadoc.jar; 赠送源代码:hbase-hadoop-compat-1.1.3-sources.jar; 赠送Maven依赖信息文件:hbase-hadoop-compat-1.1.3....
赠送jar包:hbase-hadoop2-compat-1.2.12.jar; 赠送原API文档:hbase-hadoop2-compat-1.2.12-javadoc.jar; 赠送源代码:hbase-hadoop2-compat-1.2.12-sources.jar; 赠送Maven依赖信息文件:hbase-hadoop2-compat-...
赠送jar包:hbase-hadoop-compat-1.1.3.jar; 赠送原API文档:hbase-hadoop-compat-1.1.3-javadoc.jar; 赠送源代码:hbase-hadoop-compat-1.1.3-sources.jar; 赠送Maven依赖信息文件:hbase-hadoop-compat-1.1.3....
赠送jar包:hbase-hadoop2-compat-1.1.3.jar; 赠送原API文档:hbase-hadoop2-compat-1.1.3-javadoc.jar; 赠送源代码:hbase-hadoop2-compat-1.1.3-sources.jar; 赠送Maven依赖信息文件:hbase-hadoop2-compat-...
elasticsearch-hadoop-hive-2.3.4.jar包下载
被编译的hive-hbase-handler-1.2.1.jar,用于在Hive中创建关联HBase表的jar,解决创建Hive关联HBase时报FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. org.apache.hadoop....
小牛学堂-大数据24期-04-Hadoop Hive Hbase Flume Sqoop-12天适合初学者.txt
在本文档中,我们将详细介绍如何搭建一个大数据集群环境,包括 Hadoop、HBase、Hive 和 Sqoop 的安装配置及使用。该文档将分为四部分:Hadoop 集群环境搭建、HBase 集群环境搭建、Hive 集群环境搭建和 Sqoop 集成...
在安装和配置Spark--bin-hadoop3-without-hive时,你需要确保你的环境已经正确安装了Hadoop 3.1.3,并且配置了相应的Hadoop路径。这通常涉及设置`HADOOP_CONF_DIR`环境变量,指向Hadoop配置目录。同时,由于此版本不...
Docker(Hadoop_3.3.1+HBase_2.4.16+Zookeeper_3.7.1+Hive_3.1.3 )配置文件 搭建集群环境
总结来说,“spark-3.2.0-bin-hadoop3-without-hive”是一个专注于 Spark 与 Hadoop 3 基础集成的版本,它提供了最新的 Spark 特性,如优化的 SQL 引擎和 DataFrame API,同时也兼容 Hadoop 3 的诸多改进。...
在安装和配置过程中,我们需要修改hbase-site.xml配置文件,设置HBase的根目录、Zookeeper集群地址等参数。同时,还需要确保已经正确安装并配置了Hadoop,因为HBase依赖于Hadoop的HDFS来存储数据,依赖于Zookeeper来...
它改进了 HDFS(Hadoop 分布式文件系统)的性能,增强了 YARN(Yet Another Resource Negotiator)资源管理器的能力,使得资源分配和任务调度更加高效。此外,Hadoop 2.4 对 MapReduce 框架也进行了优化,提升了大...
赠送jar包:hbase-hadoop-compat-1.2.12.jar; 赠送原API文档:hbase-hadoop-compat-1.2.12-javadoc.jar; 赠送源代码:hbase-hadoop-compat-1.2.12-sources.jar; 赠送Maven依赖信息文件:hbase-hadoop-compat-...
标题"elasticsearch-hadoop-8.8.0"指的是该组件的一个特定版本,即8.8.0版,这通常包含了针对该版本的优化和新功能。 在描述中提到,“用于hdfs集群访问ES的工具类型,可以将HQL转化为ES识别的命令”,这里有几个...
用户需要自行添加 Hive 的相关依赖,并在 Spark 的配置文件(如 `spark-defaults.conf`)中设置 `spark.sql.hive.metastore.uris`,指向 Hive 的元数据服务器地址,确保 Spark 能够访问 Hive 的元数据。 在实际操作...
赠送jar包:hbase-hadoop-compat-1.4.3.jar; 赠送原API文档:hbase-hadoop-compat-1.4.3-javadoc.jar; 赠送源代码:hbase-hadoop-compat-1.4.3-sources.jar; 赠送Maven依赖信息文件:hbase-hadoop-compat-1.4.3....
总的来说,搭建Hadoop、HBase、Spark和Hive集群涉及多个步骤,包括安装、配置、启动以及验证。整个过程需要对大数据处理原理有深入理解,并熟悉Linux系统的操作。完成后,这个集群可以处理大量数据,支持实时查询和...
赠送jar包:hbase-hadoop-compat-1.2.12.jar; 赠送原API文档:hbase-hadoop-compat-1.2.12-javadoc.jar; 赠送源代码:hbase-hadoop-compat-1.2.12-sources.jar; 赠送Maven依赖信息文件:hbase-hadoop-compat-...
Hadoop 1.x则包含了MapReduce和HDFS(Hadoop分布式文件系统)等组件,是HBase运行的基础。 【描述】中的"extclassgenerator.zip"提到了一个与Web开发相关的工具,即Ext JS和Sencha Touch的Ext JS代码生成器。Ext JS...