hadoop+hive+hbase 安装及整合


1 Technical Note 2013.3.08 Author :Yuki hadoop+hive+hbase 安装及整合 一、环境准备: 用 1 台虚拟机的两个操作系统搭建环境: 虚拟机:VMware9 操作系统:RedHat6.3_x86_64、内核:2.6.32-279.el6.x86_64 主节点:hostname:master,ip:192.168.0.175 从节点:hostname:slave1,ip:192.168.0.176 版本信息:hadoop1.0.4、hive0.9.0、hbase0.94.5、mysql5.5.30 1、 安装 JDK: jdk-6u33-linux-x64.bin java version "1.6.0_33" 2、 用 root 权限配置/etc/profile 环境变量 export JAVA_HOME=/home/yuki/jdk1.6.0_33 export JER_HOME=$JAVA_HOME/jre export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar 3、 在每一台机器上创建一个相同的帐号(以下以 hadoop 为例进行说明):useradd –g root hadoop 这个帐号的默认主目录相同,如/home/hadoop/ 4、 生成 ssh 密钥对: a. 检查节点上是否安装了 SSH(如没有安装,请自行安装): [hadoop@localhost ~]$ which ssh /usr/bin/ssh [hadoop@localhost ~]$ which sshd /usr/sbin/sshd [hadoop@localhost ~]$ which ssh-keygen /usr/bin/ssh-keygen b. 生成 ssh 密钥对 [hadoop-user@localhost ~]$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/hadoop-user/.ssh/id_rsa): Created directory '/home/hadoop-user/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/hadoop-user/.ssh/id_rsa. Your public key has been saved in /home/hadoop-user/.ssh/id_rsa.pub. c. 把 生 成 的 id_ras.pub 文 件 命 改 为 authorized_keys ,并复制到每台机器(包括本机)的 /home/hadoop/.ssh/下。如果机器上已经有 authorized_keys 文件,则把 id_rsa.pub 中的内容直接复制 到 authorized_keys 文件尾;如果不存在,则直接复制即可。 d. 修改 authorized_keys 的访问权限,只有所有者对 authorized_keys 有读写权限,其他人不允许有写权 限,否则 ssh 不能正确工作。 2 Technical Note [hadoop@localhost .ssh]$ chmod 600 authorized_keys e. 检验是否配置成功:在主节点上 ssh 从节点,若不需要密码可直接连通,证明配置成功。 二、hadoop 安装及配置(全分布模式) 1、把 hadoop-1.0.4.tar.gz 解压到 hadoop 主目录中并重命名为 hadoop,即/home/hadoop/hadoop 2、在 hadoop-env.sh(/home/hadoop/hadoop/conf 下)中添加如下环境变量 export JAVA_HOME=/home/yuki/jdk1.6.0_33 export HADOOP_HOME=/home/hadoop/hadoop export HADOOP_CONF_DIR=$HADOOP_HOME/conf export PATH=$PATH:$HADOOP_HOME/bin 3、在/etc/profile 中增加环境变量: export HADOOP_HOME=/home/hadoop/hadoop export HADOOP_CONF_DIR=$HADOOP_HOME/conf export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin 4、修改各个节点的 hostname: 5、在 host 中添加机器的 hostname 和 IP,用以通讯。Master 需要知道所有的 slave 的信息。对应的 slave 只 需要知道 Master 和自身的信息即可。注意:ip 与 hostname 必须用制表符 Tab 键分隔 Master(master)的 hosts 配置应该如下图所示: 其它的 slave(slave1……)的 hosts 配置应该如下图所示: 6、配置/home/hadoop/hadoop/conf 下的 core-site.xml,hdfs-site.xml,mapred-site.xml 这几个文件。 3 Technical Note core-site.xml 文件配置,应如下面代码所示: hdfs-site.xml 文件配置,应如下面代码所示: 4 Technical Note mapred-site.xml 文件配置,应如下面代码所示: 7、配置集群的主从关系。在所有机器节点上,Hadoop 的 conf 文件夹中,都有 slaves 和 masters 两个文件。 在 masters 中添加 SecondNameNode(master)的 IP 地址或者 hostname。在 slaves 文件中添加 Slave(slave1) 的 IP 或 hostname。所有节点都需要修改。 Masters 如下图所示: slaves 如下图所示: 行文至此,Hadoop 的整体安装和配置已经完成。 三、hive 安装及配置 Hive 是基于 Hadoop 构建的一套数据仓库分析系统,它提供了丰富的 SQL 查询方式来分析存储在 Hadoop 分布式文件系统中的数据。Hive 可以将结构化的数据存储在数据仓库中,通过自己的 SQL 去查询 分析需要的内容,这套 SQL 简称 Hive SQL。它与关系型数据库的 SQL 略有不同,但支持了绝大多数的语 句如 DDL、DML 以及常见的聚合函数、连接查询、条件查询。 Hive 在 Hadoop 的架构体系中承担了一个 SQL 解析的过程,它提供了对外的入口来获取用户的指令然 后对指令进行分析,解析出一个 MapReduce 程序组成可执行计划,并按照该计划生成对应的 MapReduce 任 务提交给 Hadoop 集群处理,获取最终的结果。 5 Technical Note 1. Hive 需要 Hadoop 的支持,也就是说在安装 Hive 之前需要正确安装 Hadoop,这里不再阐述 Hadoop 的 安装过程。一般我们会将 Hive 安装到 NameNode 的所在主机上。 2. 将 hive-0.9.0.tar.gz 安装包解压到/home/hadoop/下,解压后的路径为/home/hadoop/hive-0.9.0 3. 配置环境变量:在/etc/profile 中增加如下内容: export HIVE_HOME=/home/hadoop/hive-0.9.0 export HIVE_CONF_DIR=$HIVE_HOME/conf export HIVE_LIB=$HIVE_HOME/lib PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$ANT_HOME/bin:$HIVE_HOME/bin CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar:$HIVE_HOME/lib 4.用 mysql 做 hive 元数据: a.创建数据库 hive b.创建 hive 用户,密码为 hive,并授权 mysql> create user 'hive'@'%' identified by 'hive'; Query OK, 0 rows affected (0.01 sec) mysql>grant all privileges on hive.* to hive@localhost identified by 'hive'; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) c.将 mysql 驱动包放到/home/hadoop/hive-0.9.0/lib 下 5.配置 hive-site.xml 文件 hive-site.xml 文件配置,应如下面代码所示: 6 Technical Note 6.在 hive 下执行命令检验是否成功 报错,可以看出是没有为’hive’@’master’授权造成 用 root 用户登入 mysql 进行授权 mysql> grant all privileges on hive.* to hive@master identified by 'hive'; Query OK, 0 rows affected (0.00 sec) 再进入 hive 中 此时表示配置成功。 附:HIVE 元数据表数据字典 表名 说明 BUCKETING_COLS Hive 表 CLUSTERED BY 字段信息(字段名,字段序号) COLUMNS Hive 表字段信息(字段注释,字段名,字段类型,字段序号) DBS NUCLEUS_TABLES 元数据表和 hive 中 class 类的对应关系 PARTITIONS Hive 表分区信息(创建时间,具体的分区) PARTITION_KEYS Hive 分区表分区键(名称,类型,comment,序号) PARTITION_KEY_VALS Hive 表分区名(键值,序号) PARTITION_PARAMS SDS 所有 hive 表、表分区所对应的 hdfs 数据目录和数据格式 7 Technical Note SD_PARAMS SEQUENCE_TABLE Hive 对象的下一个可用 ID SERDES Hive 表序列化反序列化使用的类库信息 SERDE_PARAMS 序列化反序列化信息,如行分隔符、列分隔符、NULL 的表示字符等 SORT_COLS Hive 表 SORTED BY 字段信息(字段名,sort 类型,字段序号) TABLE_PARAMS 表级属性,如是否外部表,表注释等 TBLS 所有 hive 表的基本信息 四、hbase 安装及配置 HBase 是一个开源的非关系(NoSQL)的可伸缩性分布式数据库。它是面向列的,并适合于存储超大型 松散数据。HBase 适合于实时,随机对 Big 数据进行读写操作的业务环境. 虽然 secondarynamenode 和 namenode 放在同一台机器上比较不合理。但是考虑到这只是个实验的小集 群(硬件环境不允许),就不将 SecondaryNameNode 部署在其他机器上了。 主要的还是配置工作,依然将 HBase 放在/home/hadoop 下,编辑/home/hadoop/hbase-0.94.5/conf 下的 hbase-site.xml, hbase-env.sh 这几个文件。具体步骤如下: 1. 编辑所有机器上的 hbase-site 文件,命令如下: 编辑文件如下列代码所示。注意项有 3: a.其中首先需要注意 hdfs://master:9000/hbase 这里,必须与你的 Hadoop 集群的 core-site.xml 文件配置 保持完全一致才行,如果你 Hadoop 的 hdfs 使用了其它端口,请在这里也修改。 b.hbase.zookeeper.quorum 的个数必须是奇数。 c.hbae.rootdir 属性的值 hdfs://master:9000/hbase 必须用 hostname,不可以用 ip。 8 Technical Note 2.编辑所有机器的 hbase-env.sh,命令如下: 修改代码如下所示: 3.编辑所有机器的 HBase 的 HMasters 和 HRegionServers。修改/home/hadoop/hbase-0.94.5/conf 文件夹下的 regionservers 文件。添加 DataNode 的 IP 即可。代码如下: 行文至此,HBase 集群的配置已然完成。 4.启动和测试 Hbase 在 HMaster 即 Namenode (master)启动 HBase 数据库(Hadoop 集群必须已经启动)。 启动命令: 最好输入 JPS 命令测试一下你当前 Hbase 集群进程。如下图: 然后输入如下命令进入 hbase 的命令行管理界面: 在 hbase shell 下 输入 list,如下所示,列举你当前数据库的名称,如下图所示。如果你的 Hbase 没配置成功 会抛出 java 错误。 9 Technical Note 我们也可以通过 WEB 页面来管理查看 HBase 数据库。 HMaster: http://192.168.0.175:60010 我的 HBase 数据库截图: 五、整合 1 . 拷贝 hbase-0.94.5.jar 和 zookeeper-3.4.5.jar 到/home/hadoop/hive-0.9.0/lib 下。 注意:如果 hive/lib 下已经存在这两个文件的其他版本(例如 zookeeper-3.3.2.jar),建议删除后使用 hbase 下的相关版本。 2. 修改/home/hadoop/hive-0.9.0/conf 下 hive-site.xml 文件,在底部添加如下内容: hive.aux.jars.path file:///home/hadoop/hive-0.9.0/lib/hive-hbase-handler-0.9.0.jar,file:///home/hadoop/hive-0.9.0/lib/hbase- 0.94.5.jar,file:///home/hadoop/hive-0.9.0/lib/zookeeper-3.4.5.jar 3. 拷贝 hbase-0.94.5.jar 到所有 hadoop 节点(包括 master)的 hadoop/lib 下。 10 Technical Note 4. 拷贝/home/hadoop/hbase-0.94.5/conf下的hbase-site.xml文件到所有hadoop节点(包括master)的hadoop/conf 下。 5.测试: a.启动 hive b.创建 hbase 识别的数据库: hive> CREATE TABLE hbase_table_1(key int, value string) > STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' > WITH SERDEPROPERTIES ("hbase.columns.mapping"=":key,cf1:val") > TBLPROPERTIES ("hbase.table.name"="xyz"); hbase.table.name 定义在 hbase 的 table 名称 hbase.columns.mapping 定义在 hbase 的列族 此时,执行 show tables 会看到刚刚创建的表 hbase_table_1 如下图: 在 hbase 中执行 list,同样会看到刚创建的表 xyz,如下图: 至此,Hadoop+Hive+Hbase 的安装配置与整合全部完成。
还剩9页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

xiewenfeng

贡献于2013-09-18

下载需要 10 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf