- 浏览: 406038 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
秦时明月黑:
深入浅出,楼主很有功底
hive编译部分的源码结构 -
tywo45:
感觉好多错误,但还是支持!
HDFS+MapReduce+Hive+HBase十分钟快速入门 -
xbbHistory:
解析的很棒!!
Linux-VFS -
darrendu:
执行这个命令,bin/hadoop fs -ls /home/ ...
Hadoop示例程序WordCount运行及详解 -
moudaen:
请问楼主,我执行总后一条语句时,执行的是自带的1.sql,你当 ...
TPC-H on Hive
HDFS+MapReduce+Hive+HBase 十分钟快速入门
1. 前言
本文的目的是让一个从未接触 Hadoop 的人,在很短的时间内快速上手,掌握编译、安装和简单的使用。
2. Hadoop 家族
截止 2009-8-19 日,整个 Hadoop 家族由以下几个子项目组成:
成员名 |
用途 |
Hadoop Common |
Hadoop 体系最底层的一个模块,为 Hadoop 各子项目提供各种工具,如:配置文件和日志操作等。 |
Avro |
Avro 是 doug cutting 主持的 RPC 项目,有点类似 Google 的 protobuf 和 Facebook 的 thrift 。 avro 用来做以后 hadoop 的 RPC ,使 hadoop 的 RPC 模块通信速度更快、数据结构更紧凑。 |
Chukwa |
Chukwa 是基于 Hadoop 的大集群监控系统,由 yahoo 贡献。 |
HBase |
基于 Hadoop Distributed File System ,是一个开源的,基于列存储模型的分布式数据库。 |
HDFS |
分布式文件系统 |
Hive |
hive 类似 CloudBase ,也是基于 hadoop 分布式计算平台上的提供 data warehouse 的 sql 功能的一套软件。使得存储在 hadoop 里面的海量数据的汇总,即席查询简单化。 hive 提供了一套 QL 的查询语言,以 sql 为基础,使用起来很方便。 |
MapReduce |
实现了 MapReduce 编程框架 |
Pig |
Pig 是 SQL-like 语言,是在 MapReduce 上构建的一种高级查询语言,把一些运算编译进 MapReduce 模型的 Map 和 Reduce 中,并且用户可以定义自己的功能。 Yahoo 网格运算部门开发的又一个克隆 Google 的项目 Sawzall 。 |
ZooKeeper |
Zookeeper 是 Google 的 Chubby 一个开源的实现。它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。 ZooKeeper 的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。 |
3. 演练环境
3.1. 操作系统
SuSE10 , Linux2.6.16 , 32 位版本。
3.2. Hadoop
Hive 通过 SVN 直接从网上下载原代码,其它采用 hadoop-0.20.0.tar.gz 二进制安装包,所以只需要编译 Hive 。
另外,请注意不要下载 2009-8-19 号的 Hive , 2009-8-19 提交的 Hive 版本在 hadoop-0.20.0.tar.gz 上编译通不过,原因是:
Hive 源代码根目录 \ql\src\java\org\apache\hadoop\hive\ql\exec\FileSinkOperator.java 文件中多了一行:
import org.apache.hadoop.io.compress.LzoCodec;
而应当下载 2009-8-4 号和 2009-8-19 之间的版本,或 2009-8-19 之后的版本。
3.3. Hive
在 0.20.0 版本的 Hadoop 二进制安装包中,并没有集成 Hive ,所以 Hive 需要自己编译,编译时需要使用到 ant 和 ivy 两个工具,而且依赖于 Hadoop 。
3.4. Java
运行 Hadoop 和编译 Hive ,都需要使用到 Java ,所以需要第一个安装的是 Java 。
3.5. 机器
演练时,在 3 台机器上搭建 Hadoop 集群,假设这 3 台机器如下表所示:
机器名 |
机器 IP |
用途 |
Hadoop-A |
192.168.0.1 |
用作 Master |
Hadoop-B |
192.168.0.2 |
用作 Slave |
Hadoop-C |
192.168.0.3 |
用作 Slave |
注意事项 :机器名中 不能包括下划线 “ _ ” ,但 可以包括横线 。另可使用不带参数的 hostname 来查看机器名,修改机器名方法为: hostname 机器名,如: hostname Hadoop-A 。另外,集群内所有的机器登录 用户名和密码要保持相同 。
3.6. 安装列表
安装 |
说明 |
Java 1.6 |
A 、 B 和 C 三台机器都需要安装 |
Hadoop 0.20.0 |
A 、 B 和 C 三台机器都需要安装 |
Hive |
只需要在 B 和 C 两台机器上安装,也就是 Slave 机器不需要安装 |
ant |
只需要在 B 和 C 两台机器上安装,也就是 Slave 机器不需要安装 |
ivy |
只需要在 B 和 C 两台机器上安装,也就是 Slave 机器不需要安装 |
注意事项:为求简单所有操作均以 root 用户完成,实际上可以使用非 root 用户,但环境变量就不能直接在 /etc/profile 文件中添加了。
4. 配置 ssh2 和修改 /etc/hosts
需要在所有机器上配置 ssh2 和修改 /etc/hosts 。
4.1. 配置 ssh2
1) mkdir ~/.ssh2 # 如果 ~/.ssh2 目录已经存在,则这一步可以跳过
2) cd ~/.ssh2
3) ssh-keygen2 -t rsa
4) echo "IdKey id_rsa_2048_a" > identification
5) echo "key id_rsa_2048_a.pub" > authorization
(另一种方法: ssh-keygen -t rsa -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub>> ~/.ssh/authorized_keys)
4.2. 修改 /etc/hosts
1) 在 /etc/hosts 文件中增加如下三行:
192.168.0.1 Hadoop-A
192.168.0.2 Hadoop-B
192.168.0.3 Hadoop-C
并根据上述关系,使用 hostname 命令修改三台机器的机器名。
5. 安装 Java
1) 从 http://www.java.com/zh_CN/download/manual.jsp 下载 jre ,请注意是 Java1.6 版本,原因是 Hadoop 和 Hive 使用到了模板等特性
2) 下载 “Linux (自解压文件) ” 这个版本的 jre ,如下图所示
3) 将下载的 Java 二进制安装包 jre-6u15-linux-i586.bin 上传到 /usr/local 目录
4) 为 jre-6u15-linux-i586.bin 文件增加可执行权限: chmod +x jre-6u15-linux-i586.bin
5) 运行 jre-6u15-linux-i586.bin : ./jre-6u15-linux-i586.bin
6) 用户协议接受,选择 yes
7) 安装成功后,在 /etc/profile 增加如下一行:
export PATH=/usr/local/jdk/bin:$PATH
6. 安装 Hadoop
1) 从 http://hadoop.apache.org/common/releases.html 下载 Hadoop 二进制安装包 hadoop-0.20.0.tar.gz
2) 将 hadoop-0.20.0.tar.gz 上传到 /usr/local 目录
3) 在 /usr/local 目录,将 hadoop-0.20.0.tar.gz 解压
4) 为 hadoop-0.20.0 建一个软链接: ln -s hadoop-0.20.0 hadoop
5) 在 /etc/profile 文件中,增加如下两行:
export HADOOP_HOME=/usr/local/hadoop
export PATH=$HADOOP_HOME/bin:$PATH
完成以上步骤后, Hadoop 就安装好了。
7. 配置 HDFS
7.1. 修改 hadoop-env.sh
所有机器做同样操作。
hadoop-env.sh 位于 /usr/local/hadoop/conf 目录下,需要在这个文件中设置环境变量 JAVA_HOME ,增加如下一行即可:
export JAVA_HOME=/usr/local/jre
7.2. 修改 core-site.xml
所有机器做同样操作。
在 hadoop-0.20.0.tar.gz 安装包中, conf 目录下的 core-site.xml 默认是空的,但 src/core 目录下有一个缺省的配置文件 core-default.xml ,所以只需要将它复制到 conf 目录下,并重命名成 core-site.xml 即可,下述操作都是基于此操作的。
core-site.xml 文件位于 /usr/local/hadoop/conf 目录下。
7.2.1. hadoop.tmp.dir
设置临时文件目录参数 hadoop.tmp.dir ,默认情况下 master 会将元数据等存在这个目录下,而 slave 会将所有上传的文件放在这个目录下,在这里数据目录统一为 /usr/local/hadoop/data :
<property>
<name>hadoop.tmp.dir </name>
<value>/usr/local/hadoop/data </value>
<description>A base for other temporary directories.</description>
</property>
注意事项:由于上传到 Hadoop 的所有文件都会被存放在 hadoop.tmp.dir 所指定的目录,所以要确保这个目录是足够大的。
7.2.2. fs.default.name
master 用这个参数,提供基于 http 协议的状态上报界面,而 slave 通过这个地址连接 master ,设置如下:
<property>
<name>fs.default.name </name>
<value>hdfs://Hadoop-A:54310 </value>
<description>The name of the default file system. A URI whose
scheme and authority determine the FileSystem implementation. The
uri's scheme determines the config property (fs.SCHEME.impl) naming
the FileSystem implementation class. The uri's authority is used to
determine the host, port, etc. for a filesystem.</description>
</property>
备注: fs.default.name 指定 NameNode 的 IP 地址和端口号 , 缺省值是 file:///, ,表示使用本地文件系统 , ,用于单机非分布式模式。
dfs.replication 指定 HDFS 中每 Block 被复制的次数,起数据冗余备份的作用。在典型的生产系统中,这个数常常设置为 3 。
7.3. 修改 masters
这一步只需要在 master 节点上执行。
这个文件存储备 master 节点的 IP 或机器名,建议使用机器名,每行一个机器名。主 master 会将元数据等备份到备 master 节点,文件位于 conf 目录下。
这里,我们为 masters 文件增加如下一行即可:
Hadoop-A
7.4. 修改 slaves
这一步也只需要在 master 节点上执行,以便 master 以 ssh2 方式去启动所有的 slave 节点。
这个文件存储 slave 节点的 IP 或机器名,建议使用机器名,每行一个机器名。这里我们增加如下两行:
Hadoop-B
Hadoop-C
7.5. 修改 hdfs-site.xml
所有机器做同样操作。
从 src/hdfs 目录下,将 hdfs-default.xml 复制到 conf 目录,并重命名成 hdfs-site.xml ,这里不需要修改此文件。
8. 配置 MapReduce
8.1. 修改 mapred-default.xml
所有机器做同样操作。
从 src/mapred 目录下,将 mapred-default.xml 复制到 conf 目录,并重命名成 mapred-site.xml 。
<property>
<name>mapred.job.tracker </name>
<value>Hadoop-A:54311 </value>
<description>The host and port that the MapReduce job tracker runs
at. If "local", then jobs are run in-process as a single map
and reduce task.
</description>
</property>
备注: mapred.job.tracker 指定 JobTracker 的 IP 地址和端口号。缺省值是 local, ,表示在本地同一 Java 进程内执行 JobTracker 和 TaskTracker, ,用于单机非分布式模式。
9. 安装 Hive
hadoop-0.20.0 中并没有集成二进制的 Hive ,所以需要通过源代码编译一个,但是 2009-8-19 日提交的 Hive 并不能在 hadoop-0.20.0 上编译,而应当使用 2009-8-4 之后和 2009-8-19 之间的版本。
9.1. 安装 ant
1) 从 http://ant.apache.org/ 下载 ant 二进制安装包,选择 1.7.1 版本
2) 下载后,将包 apache-ant-1.7.1-bin.zip 上传到 /usr/local 目录
3) 进入 /usr/local 目录,将 apache-ant-1.7.1-bin.zip 解压: unzip apache-ant-1.7.1-bin.zip
4) 进入 /usr/local 目录,为 ant 建一个软连接: ln -s apache-ant-1.7.1 ant
5) 修改 /etc/profile ,增加如下行:
export PATH=/usr/local/ant/bin:$PATH
至此, ant 算是安装好了 。
9.2. 安装 ivy
1) 从 http://www.apache.org/dist/ant/ivy/ 下载 ivy 二进制安装包,选择 2.1.0 -rc2 版本
2) 下载后,将包 apache-ivy-2.1.0-rc2-bin.tar.gz 上传到 /usr/local 目录
3) 进入 /usr/local 目录,将 apache-ivy-2.1.0-rc2-bin.tar.gz 解压: tar xzf apache-ivy-2.1.0-rc2-bin.tar.gz
4) 进入 /usr/local 目录,为 ivy 建一个软连接: ln -s apache-ivy-2.1.0-rc2 ivy
6) 修改 /etc/profile ,增加如下行:
export IVY_HOME=/usr/local/ivy
至此, ivy 算是安装好了。
9.3.
编译
<s
发表评论
发表评论
-
Hadoop的Secondary NameNode方案
2012-11-13 10:39 1284http://book.51cto.com/art/20120 ... -
hadoop
2011-10-08 12:20 1109hadoop job解决 ... -
hadoop作业调优参数整理及原理
2011-04-15 14:02 13131 Map side tuning 参数 ... -
Job运行流程分析
2011-03-31 11:04 1672http://www.cnblogs.com/forfutur ... -
hadoop作业运行部分源码
2011-03-31 10:51 1421一、客户端 Map-Reduce的过程首先是由客户端提交 ... -
eclipse中编译hadoop(hive)源码
2011-03-24 13:20 3422本人按照下面编译Hadoop 所说的方法在eclipse中编 ... -
Configuration Parameters: What can you just ignore?
2011-03-11 15:16 866http://www.cloudera.com/blog/20 ... -
7 Tips for Improving MapReduce Performance
2011-03-11 15:06 1004http://www.cloudera.com/blog ... -
hadoop 源码分析一
2011-02-22 15:29 1206InputFormat : 将输入的 ... -
hadoop参数配置(mapreduce数据流)
2011-01-14 11:08 2904Hadoop配置文件设定了H ... -
混洗和排序
2011-01-05 19:33 3254在mapreduce过程中,map ... -
hadoop中每个节点map和reduce个数的设置调优
2011-01-05 19:28 8386map red.tasktracker.map.tasks. ... -
hadoop profiling
2010-12-20 20:52 2638和debug task一样,profiling一个运行在分布 ... -
关于JVM内存设置
2010-12-20 20:49 1352运行map、reduce任务的JVM内存调整:(我当时是在jo ... -
HADOOP报错Incompatible namespaceIDs
2010-12-14 12:56 1010HADOOP报错Incomp ... -
node1-node6搭建hadoop
2010-12-13 18:42 1130环境: node1-node6 node1为主节点 ... -
hadoop启动耗时
2010-12-07 17:28 1325http://blog.csdn.net/AE86_FC/ar ... -
namenode 内部关键数据结构简介
2010-12-07 16:35 1283http://www.tbdata.org/archiv ... -
HDFS常用命令
2010-12-04 14:59 1318文件系统检查 bin/hadoop fsck [pa ... -
HDFS添加和删除节点
2010-12-04 14:45 2015From http://developer.yahoo.co ...
相关推荐
HDFS+MapReduce+Hive+HBase十分钟快速入门.pdf
本资料“HDFS+MapReduce+Hive+HBase十分钟快速入门”旨在帮助初学者迅速理解这些技术的基础概念和应用场景。 **HDFS(Hadoop Distributed File System)**: HDFS是Apache Hadoop项目的核心部分,是一种分布式文件...
《hadoop-HDFS+MapReduce+Hive+Hbase快速入门》,一门入门hadoop的经典书籍,相信能够给学习云计算的大家带来帮助。
通过对Hadoop分布式计算平台最核心的分布式文件系统HDFS、MapReduce处理过程,以及数据仓库工具Hive和分布式数据库Hbase的介绍,基本涵盖了Hadoop分布式平台的所有技术核心。通过这一阶段的调研总结,从内部机理的...
标题中的“基于Python+SpringBoot+Vue+HDFS+MapReduce+HBase+Hive+Kafka+Spark”提到了一系列技术,它们都是大数据处理、分布式系统和Web开发的重要组件。接下来,我们将深入探讨这些技术及其在实际项目中的应用。 ...
mapreduce方式入库hbase hive hdfs,速度很快,里面详细讲述了代码的编写过程,值得下载
在大数据领域,构建一个完整的生态系统是至关重要的,其中包括多个组件,如Hadoop、Spark、Hive、HBase、Oozie、Kafka、Flume、Flink、Elasticsearch和Redash。这些组件协同工作,提供了数据存储、处理、调度、流...
在大数据领域,HDFS、Flume、Kafka、Spark、HBase和Hive是关键的组件,它们共同构建了一个高效、可靠的数据处理和分析体系。下面将分别介绍这些技术及其在实际项目中的应用。 1. HDFS(Hadoop Distributed File ...
QJM是一种在Hadoop中实现NameNode HA的关键组件,它通过协调JournalNodes来持久化HDFS的元数据变更,从而在主NameNode故障时能快速切换到备用NameNode。 首先,我们要理解HDFS HA的基本概念。HDFS HA提供了一对活动...
基于Flink+ClickHouse构建的分析平台,涉及 Flink1.9.0 、ClickHouse、Hadoop、Hbase、Kafka、Hive、Jmeter、Docker 、HDFS、MapReduce 、Zookeeper 等技术
- **Hadoop-0.20.0-HDFS+MapReduce+Hive+HBase十分钟快速入门.doc**:这与前面的快速入门文档类似,可能对Hadoop的早期版本进行了快速介绍。 - **Hbase_分析报告白皮书.doc**:这可能是一份关于HBase在某个具体场景...
2. 配置连接:设置Hive和HBase的配置参数,如Zookeeper地址、HDFS路径等,以便正确地连接到服务。 3. 创建连接:通过API创建Hive和HBase的连接实例,如HiveConnection和HBaseAdmin。 4. 执行操作:使用提供的API进行...
分布式文件存储系统:HDFS 分布式计算框架:MapReduce 集群资源管理器:YARN 单机伪集群环境搭建 集群环境搭建 常用 Shell 命令 Java API 的使用 基于 Zookeeper 搭建 Hadoop 高可用集群 二、Hive 简介及核心概念 ...
【标题】:“hadoop,hive,hbase学习资料”是一份综合性的学习资源,涵盖了大数据处理领域中的三个核心组件——Hadoop、Hive和Hbase。这些工具在大数据处理和分析中发挥着至关重要的作用。 【描述】:描述指出这份...
在构建大数据处理环境时,Hadoop、HBase、Spark和Hive是四个核心组件,它们协同工作以实现高效的数据存储、处理和分析。本教程将详细介绍如何在Ubuntu系统上搭建这些组件的集群。 1. **Hadoop**:Hadoop是Apache...
【Hive、Hbase、MySQL的区别】 Hive、Hbase和MySQL是三种不同类型的数据库系统,它们各自在数据处理和存储方面有着独特的特性和应用场景。 1. Hive与Hbase的区别: - Hive是一个基于Hadoop的数据仓库工具,它允许...