hadoop1.2.1配置主节点怎么配置

您现在的位置: &
Hadoop主节点(NameNode)备份策略以及恢复方法
Hadoop主节点(NameNode)备份策略以及恢复方法
  一、dits和fsimage 首先要提到两个文件edits和fsimage,下面来说说他们是做什么的。
集群中的名称节点(NameNode)会把文件系统的变化以追加保存到日志文件edits中。
当名称节点(NameNode)启动时,会从镜像文件 fsimage 中读取HDFS的状态,并且把edits文件中记录的操作应用到fsimage,也就是合并到fsimage中去。合并后更新fsimage的HDFS状态,创建一个新的edits文件来记录文件系统的变化
  &&& 那么问题来了,只有在名称节点(NameNode)启动的时候才会合并fsimage和edits,那么久而久之edits文件会越来越大,特别是大型繁忙的HDFS集群。这种情况下,由于某种原因你要重启名称节点(NameNode),那么会花费很长的时间去合并fsimge和edits,然后HDFS才能运行。
  二、Secondary NameNode &&& 目前使用的版本Hadoop-0.20.2可以使用Secondary NameNode来解决上面的问题。Secondary NameNode定期合并fsimage和edits日志,把edits日志文件大小控制在一个限度下。因为内存需求和NameNode差不多(On the same order),所以Sencondary NameNode通常要运行在另外个机器上。&&& secondary NameNode配置在conf/masters文件,启动命令:bin/start-dfs.sh(如果你使用不建议的start-all.sh也是会启动的)。
  三、什么时候checkpiont secondary NameNode 什么时候执行checkpoint来合并fsimage和eidts。呢?有两个配置参数控制:
fs.checkpoint.period 指定两次checkpoint的最大时间间隔,默认3600秒。
fs.checkpoint.size&&& 规定edits文件的最大值,一旦超过这个值则强制checkpoint,不管是否到达最大时间间隔。默认大小是64M。
  &&&& secondary NameNode 保存最后一次checkpoint的结果,存储结构和主节点(NameNode)的一样,所以主节点(NameNode)可以随时来读取。
  &&& 如果你没有启动secondary NameNode 那么可以试试 bin/hadoop secondarynamenode -checkpoint 甚至 bin/hadoop secondarynamenode -checkpoint force. 看看生成的文件。
  checkpoint可以解决重启NameNode时间过长的弊端。另外还有偏方:
  四、Import Checkpoint(恢复数据) &&& 如果主节点挂掉了,硬盘数据需要时间恢复或者不能恢复了,现在又想立刻恢复HDFS,这个时候就可以import checkpoint。步骤如下:
拿一台和原来机器一样的机器,包括配置和文件,一般来说最快的是拿你节点机器中的一台,立马能用(部分配置要改成NameNode的配置)
创建一个空的文件夹,该文件夹就是配置文件中dfs.name.dir所指向的文件夹。
拷贝你的secondary NameNode checkpoint出来的文件,到某个文件夹,该文件夹为fs.checkpoint.dir指向的文件夹
执行命令bin/hadoop namenode -importCheckpoint
  &&&& 这样NameNode会读取checkpoint文件,保存到dfs.name.dir。但是如果你的dfs.name.dir包含合法的fsimage,是会执行失败的。因为NameNode会检查fs.checkpoint.dir目录下镜像的一致性,但是不会去改动它。值得推荐的是,你要注意备份你的dfs.name.dir和 ${hadoop.tmp.dir}/dfs/namesecondary。
  五、Checkpoint Node 和 Backup Node 在后续版本中hadoop-0.21.0,还提供了另外的方法来做checkpoint:Checkpoint Node 和 Backup Node。则两种方式要比secondary NameNode好很多。所以 The Secondary NameNode has been deprecated. Instead, consider using the Checkpoint Node or Backup Node.Checkpoint Node像是secondary NameNode的改进替代版,Backup Node提供更大的便利,这里就不再介绍了。
&&&主编推荐
&&&热门试卷
&&&最新视频
&&&热门阅读
&&&最新问答
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&&&增值电信业务经营许可证湘B2-Hadoop+Hive+Mysql安装文档
redhat enterprise server5.5
共有7台机器,做4个数据节点,将name节点、jobtracker和secondaryname都分开,各机器分工如下
123.456.789.30
Master.hadoop
123.456.789.31
Slave1.hadoop
123.456.789.32
Slave2.hadoop
123.456.789.33
Slave3.hadoop
123.456.789.34
Slave4.hadoop
123.456.789.35
Job.hadoop
Jobtracker
123.456.789.36
Sec.hadoop
第二名称节点
所需的安装包
hadoop-1.0.0-bin.tar.gz
mysql-5.1.52.tar.gz
jdk-6u31-linux-x64.bin
hive-0.8.1.tar.gz
准备工作(使用root用户)
Hosts&文件配置
在所有机器上配置&/etc/hosts&文件&(一个都不能少必须所有机器全做)
vi /etc/hosts&
添加如下行:
123.456.789.30&&master.hadoop
123.456.789.31&&slave1.hadoop
123.456.789.32&&slave2.hadoop
123.456.789.33&&slave3.hadoop
123.456.789.34&&slave4.hadoop
123.456.789.35&&job.hadoop
123.456.789.36&&sec.hadoop
修改各个主机的hostname
Linux&安装好后,其默认的名是&localhost。修改&/etc/sysconfig/network&配置文件
vi /etc/sysconfig/network
如:123.456.789.30机器上,修改为master.hadoop
123.456.789.31机器上,修改为&slave1.hadoop
特别说明:一个都不能少必须所有机器全做
建立&hduser&用户和&hadoop&组
groupadd hadoop
useradd -g hadoop hduser
passwd hduser&
在/home/hduser下创建文件夹tools,&使用hduser用户将所有的安装包都ftp到这个文件夹
配置免验证
&&&&&&&&&&&&为避免hadoop运行中需要密码,因此从主节点和JobTracker到机器机器需要做ssh免密码验证
&&&&&&&&&&&&&&在主节点使用hduser用户执行
ssh-keygen -t rsa -P &&
cat $HOME/.ssh/id_rsa.pub && $HOME/.ssh/authorized_keys
ssh localhost
ssh master.hadoop
将密钥创送给其他主机
ssh-copy-id -i $HOME/.ssh/id_rsa.pub hduser@slave1.hadoop
ssh-copy-id -i $HOME/.ssh/id_rsa.pub hduser@slave2.hadoop
ssh-copy-id -i $HOME/.ssh/id_rsa.pub hduser@slave3.hadoop
ssh-copy-id -i $HOME/.ssh/id_rsa.pub hduser@slave4.hadoop
ssh-copy-id -i $HOME/.ssh/id_rsa.pub hduser@job.hadoop
ssh-copy-id -i $HOME/.ssh/id_rsa.pub hduser@sec.hadoop
特别说明:执行ssh-copy-id的时候需要输入yes&和&该主机的密码。
安装hadoop(使用hduser用户)
在主机安装jdk及解压其他软件
&&&&&&A&切换到/home/hduser/tools下,解压jdk
&&&&&&&&&&&&&&&&&&&&&&&&&&&&./jdk-6u31-linux-x64
&&&&&&&&&&&&&&&&&&&&&特别说明:如果提示权限不足,就赋权吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&chmod
&&&&&&B&&解压hadoop,并改名
&&&&&&&&&&&&&&&&&&&&&&&&&&&&tar
-xvf hadoop-1.0.0-bin.tar
&&&&&&&&&&&&&&&&&&&&&&&&&&&mv
hadoop1.0.0&&hadoop
&&&&&&&&&&&&&&&&&&&&&C&解压mysql
tar –xvf&&&mysql-5.1.52.tar.gz
D&解压Hive,并改名
&&&&&&&&&&&&&&&&&&&&&&&&&&&&tar
–xvf hive-0.8.1.tar.gz
mv hive-0.8.1 hive
修改配置文件
#vi /etc/profile&添加环境变量
export JAVA_HOME=/home/hduser/jdk1.6.0_30/
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export HADOOP_HOME=/home/hduser/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin
export HIVE_HOME=/home/hduser/hive
export PATH=$HIVE_HOME/bin:$PATH
特别说明:在所有机器上添加
执行#source
/etc/profile ,使环境变量立即生效
修改hadoop-env.sh
&vi $HADOOP_HOME/etc/hadoop/hadoop-env.sh
如下修改:
# The java implementation to use.&&Required.
export JAVA_HOME=/home/hduser /jdk1.6.0_30
export HADOOP_PID_DIR=/home/hduser/pids
创建所需文件夹
在/home/hduser/hadoop下创建文件夹tmp
mkdir /home/hduser/hadoop/tmp
上传配置文件
将hadoop_conf文件夹中所有的文件上传到/home/hduser/hadoop/etc/hadoop文件夹下覆盖原有的。
修改hdfs-site.xml
&property&
&&&&&&&&&name&dfs.permissions&/name&
&&&&&&&&&value&false&/value&
&/property&
修改core-site.xml
修改属性hadoop.tmp.dir值为:/home/hduser/hadoop/tmp
修改属性dfs.http.address值为:sec.hadoop:50070&&(指向第二名称节点)
修改属性dfs.hosts.exclude&值为:/home/hduser/hadoop/etc/hadoop/excludes
(用于删除节点的)
修改mapred-site.xml
&&&&&&&修改属性mapred.job.tracker值为:job.hadoop:54311&&&(指向jobtracker)
修改masters
&&&&&&&将内容修改为:sec.hadoop
修改slaves文件
&&&&&&&将内容修改为:
&&&&&&&&&&&&&&slave1.hadoop
&&&&&&&&&&&&&&slave2.hadoop
&&&&&&&&&&&&&&slave3.hadoop
&&&&&&&&&&&&slave4.hadoop
将jdk以及hadoop传送到其他主机
scp –r jdk1.6.0_31 hduser@slave1.hadoop:/home/hduser
scp -r jdk1.6.0_31 hduser@slave2.hadoop:/home/hduser
scp -r jdk1.6.0_31&&hduser@slave3.hadoop:/home/hduser
scp -r jdk1.6.0_31 hduser@slave4.hadoop:/home/hduser
scp -r jdk1.6.0_31 hduser@job.hadoop:/home/hduser
scp -r jdk1.6.0_31&&hduser@sec.hadoop:/home/hduser
scp -r hadoop hduser@slave1.hadoop:/home/hduser
scp -r hadoop hduser@slave2.hadoop: /home/hduser
scp -r hadoop hduser@slave3.hadoop: /home/hduser
scp -r hadoop hduser@slave4.hadoop: /home/hduser
scp -r hadoop hduser@job.hadoop: /home/hduser
scp -r hadoop hduser@sec.hadoop: /home/hduser
启动hadoop
&因为现在测试是不能直接使用start-all,因此启动顺序为(均在主节点上执行)
&&a.使用hduser登录主节点,进入hadoop/sbin目录,启动name节点
&&&./hadoop-daemon.sh start namenode
&&b.启动数据节点(只是启动各个数据节点的datanode)
&&&./start-dfs.sh
&&c.登录job.hadoop启动jobtracker(同时会启动各个节点的tasktracker)
&&&&&&&& ./start-mapred.sh
关闭顺序(在主节点sbin下执行)
关闭datanode及namenode
./stop-dfs.sh
登陆job主机(关闭tasktracker及jobtracker)
./stop-mapred.sh
启动时可能会报权限不足的问题,需要把每台主机上 hadoop/sbin下所有文件赋权。
验证启动效果
查看各个主机上运行的内容是否正常,使用jps,按照当前规划结果应该如下:&&&&&
DataNode,taskTracker
JobTracker
第二名称节点
Secondaryname
特别说明:也可以查看hadoop/logs/下的日志文件查看启动
安装mysql(使用root)
1.切换到mysql解压目录
&&&&&&&cd /home/hduser/tools/mysql
2../configure --prefix=/usr/local/mysql --sysconfdir=/etc --localstatedir=/data/mysql
注意修改localstatedir为你想要将数据库文件所放的位置
4.make install
5.make clean
6.groupadd mysql
7.useradd -g mysql mysql&&(第一个mysql是组,第二个mysql是用户)
8.cd /usr/local/mysql
9.cp /usr/local/mysql/share/mysql/f /f
10.#bin/mysql_install_db
--user=mysql #建立基本数据库,必须指明为mysql用户,只有这一步才能在usr/local/mysql下出现var目录
# bin/mysqld_safe --user=mysql &
11. bin/mysqladmin -u root password oracle
12.启动和关闭mysql(可跳过)
#bin/mysqld_safe &或/usr/local/mysql/share/mysql/mysql.server
start&启动mysql
停止mysql方法1
  #/usr/local/mysql/share/mysql/mysql.server
stop&停止mysql
关闭mysql方法2
#ps -aux|grep mysql查看进程
id号&----这是杀mysql进程的,id号是在查看mysql进程里面看的到。
13.将mysql注册为服务
cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysqld
用root用户把mysql添加到系统服务中。
  #/sbin/chkconfig
--add mysqld&添加mysql为服务
  #/sbin/chkconfig
--del mysqld&删除mysql服务
  /sbin/service&&mysqld
restart&&&&#重新启动服务查看是否生效
  /sbin/chkconfig
--list mysqld&&&&#查看是否345运行级别都打开mysql
14.为Hive建立相应的MySQL帐号,并赋予足够的权限
/usr/local/mysql/bin下执行:./mysql
-u root -p;
创建hive数据库:create
database hive;
创建用户hive,它只能从localhost连接到数据库并可以连接到wordpress数据库:grant
all on hive.* to hive@localhost identified by 'oracle'。
安装hive(hduser)
1.&修改hive目录下/conf/hive-env.sh.template中的HADOOP_HOME为实际的Hadoop安装目录:/home/hduser/hadoop
2.在hive下创建文件夹tmp和warehouse
&&&&&&&mkdir /home/hduser/hive/tmp
&&&&&&&mkdir /home/hduser/hive/warehouse
3.&在HDFS中创建/tmp和/user/hive/warehouse并设置权限:
hadoop fs -mkdir /home/hduser/hive/tmp
hadoop fs -mkdir /home/hduser/hive/warehouse
hadoop fs -chmod g+w /home/hduser/hive/tmp
hadoop fs -chmod g+w /home/hduser/hive/warehouse
4.将hive_conf中的配置文件拷贝到/home/hduser/hive/conf中
5.修改hive-site.xml文件
&&&&&&&修改属性hive.metastore.warehouse.dir值为:/home/hduser/hive/warehouse
&&&&&&&修改属性hive.exec.scratchdir值为:/home/hduser/hive/tmp
6.把MySQL的JDBC驱动包mysql-connector-java-5.0.7-bin.jar复制到Hive的lib目录下。
7.启动Hive,执行show
8.如第七步无异常,就成功一大半了,建几个表,加载些数据测试
create table test_src
&&ACCOUNT1&&&&&&&&&&string,
&&url&&&&&&&&string)
row format delimited fields terminated by '\|' ;&&
&&&&&&&&&&&&&&&&&&&&
touch&&a.txt
|http://qww.cocm.ccc
load data local inpath&&'/data/myfile/a.txt'
into table test_
目前采用的是最基本安装,未设置任何参数,生产需要时还需配置相关参数
&sqoop安装(hduser用户)
1.解压sqoop1.4.tar.gz
2.重新命名为sqoop
3.修改SQOOP的文件bin/configure-sqoop,注释掉所有关于hbase和zookeeper
4.将ojdbc6.jar 和 hadoop-core-1.0.0.jar& 拷贝到sqoop/lib下
5.增加环境变量
export SQOOP_HOME=XXXX
&&&&&&&&&&&&&&&&&&&& export PATH=$SQOOP_HOME/bin:$PATH
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:66402次
积分:1624
积分:1624
排名:第9990名
原创:73篇
转载:164篇
(1)(2)(1)(9)(4)(4)(4)(10)(4)(5)(6)(3)(1)(9)(8)(16)(6)(30)(35)(68)(4)(1)(1)(6)(1)(3)
http://my.oschina.net/leejun2005 /6124人阅读
公司产品最近在往大数据方向靠拢,个人有幸能参与在其中,一路研究下来,学习到了许多,也尝到了不少辛苦,尤其是Hadoop2.2.0+Hbase.96+Hive0.12的配置,前后折腾了近一个多星期,个中艰辛,恐怕只有真正的技术人员能体会吧,没有办法,绝强,死磕,本就是我们这些人的特点,下面讲一下自己的经历,给后来学习者一个提示吧,权当抛砖引玉。
补充:所以编译好的jar包均分享到百度云盘:&/s/1mgocZxu &
,可自行下载
(一).首先是hadoop的下载和安装,hadoop2.2.0现在是apache官网上的最新stable版本,你可以从:来下载&包。
(二).下载后要将tar包传到我们计划的Linux系统上解压缩,一般来说我们肯定是已经准备好了Linux系统的,也许是一台真实的机器,也许只是测试玩玩的虚拟机,不管怎么样,在我们将tar包传到linux里之前,需要先在所有linux系统上准备一些环境,具体的有以下几步:
& &&& & 1.安装jdk,并设置好JAVA_HOME ,比如/usr/java/jdk1.6
&2.设置主机名,一般来说hadoop集群都是多台机器的,得给他们安不同的名字以示区分 ,通过vi &/etc/sysconfig/network设置hostname ,假设为server1,集群中的其他机器记得设置其他不同的名字,如server2,server3等。说明,文中我以server1称为主机,也就是HDFS中的nameNode,HBase中的HMaster,其他机器server2,server3是HDFS中的dataNode和HBase中的regionServer和zookeeper.quorum。
& &&& & 3.设置ip和hostname的映射关系,如果你还有其他的ip,也一并设置,通过 vi /etc/hosts&&
&&& &&& &&&
& &&& & 4.关闭防火墙,如果你要配置的是多个主机集群环境,那么必须将所有主机的防火墙关闭,否则有可能出现如HDFS中的dataNode无法心跳和NameNode同步的情况。
& &&& &&5.创建专门的用户,一般来说,我们不会直接用root来启停hadoop应用,如果是集群环境,建议统一设置的相同的环境变量和专门的用户,这样就不用在集群将同步的时候还考虑不同的环境变量路径问题,比如我们创建hadoop用户。先创建组:groupadd
hadoop,然后创建用户:useradd -g hadoop hadoop,然后修改hadoop用户的密码:passwd hadoop,建议将密码设置的短点,因为后面你启停应用的时候要用到的,最后建议将hadoop用户加到sodu列表:vi
/etc/sudoers &(hadoop &ALL=(ALL) & & &ALL),
& &&& &&6.设置主机到其他机器的无密码ssh,hadoop会通过shell脚步去控制其他主机启停,所有必需设置ssh的无密码登入,具体步骤如下:
& &&& &&a).用hadoop登入server1,cd到用户目录下,如/home/hadoop/
运行ssh-keygen –t rsa&&(连续3次回车即可)
& & b).ssh拷贝到其他server上scp ~/.ssh/id_rsa.pub hadoop@server2:~/temp_key
& & c).登入都各server上创建并改变.ssh权限 &chmod&700&~/.ssh
& &d).转换内容及改变权限
& & & & cat ~/temp_key &&~/.ssh/authorized_keys
& & & & chmod&600&~/.ssh/authorized_keys
& & e).验证:从server1上ssh server2或其他server ,看看能不能直接登入,如果直接能登入不需要输入密码,则表示配置成功,否则重新配置,其他机器的配置把server2换成server3或其他即可。
7.最后用hadoop用户再确认一下环境变量,比如hostname,JAVA_HOME,service iptables status等
8.同步集群里的机器时间,是他们之间的时间差距不要超过30秒,因为如果不同步的话,后面hbase启动regionServer的时候会报错的。
(三)环境准备好后,可以将下载的hadoop的tar包传了,建议上传到/home/hadoop用户目录下,方便管理,
加压缩: &tar xzvf &&,加压缩就能在/home/hadoop下看到hadoop-2.2.0目录了。然后vi
/home/hadoop/.bash_profile配置一下HADOOP_HOME,并在PATH后再加入hadoop下的bin和sbin,运行PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin,因为hive的运行是要基于hadoop做Map-reduce的,所以必须设置,设置好后运行source /home/hadoop/.bash_profile使其生效。下一步就是具体的配置了。
(四)cd到/home/hadoop/etc/hadoop/ 目录下修改几个配置文件的参数:
& &&& &&&&&&&
&&& & 1.vi hadoop-env.sh设置正确的java_home,如&export
JAVA_HOME=/usr/java/jdk1.6
&&& &&& & 2.vi&core-site.xml,(如果没有此文件直接生成即可)将以下内容复制过去:
&&&&configuration&
&property&
&name&fs.default.name&/name&
&value&hdfs://server1:9000&/value&
&/property&
&property&
&name&hadoop.tmp.dir&/name&
&value&/home/hadoop/data/tmp&/value&
&/property&
&property&
& & & &name&dfs.name.dir&/name&
& & & &value&/home/hadoop/data/hdfslog&/value&
&/property&
&property&
& & &&name&dfs.data.dir&/name&
& & &&value&/home/hadoop/data/hdfsdata&/value&
&/property&
&/configuration&&
注意红色字体,需要指定HDFS的地址及端口,这样HBase就能直接用此地址作为数据文件的根目录,其他照着配置就可以了。如果不配置默认是在/tmp下,一般不建议在/tmp,因为系统启动后就没了。
3.vi slaves ,即配置HDFS的dataNode,根据集群的计划,加上对应的名称即可,每行一个,如:
(五)基本配置完成后,需要用scp命令把整个hadoop2.2.0拷贝到其他节点上,如scp -r /home/hadoop/hadoop2.2.0 hadoop@server2:/home/hadoop/
,其他节点把server2换成其他名字拷贝过去即可。都拷贝完成后仍只在主节点server1上运行命令即可,hadoop会自动利用前面我们配置的无密码ssh在其他节点上执行shell脚步的。
在启动服务前一定记得要格式化文件,运行:hadoop namenode
一般来说如果上述你配置了HADOOP_HOME,并把$HADOOP_HOME/bin也加入到了PATH下,那么是可以直接运行的,如果不行,可以直接cd到/home/hadoop/hadoop-2.2.0/bin下运行./hadoop
namenode -format.执行完后cd 到/home/hadoop/hadoop-2.2.0/sbin下运行$HADOOP_HOME/sbin/start-dfs.sh就可以启动了。启动完后可以运行java自带的jps命令,看有没有产生namenode 和secondnamenode。另外还可以到浏览器打开&看效果。
------------------------华丽分割线 edited By Dimamcro----------------
(六)HDFS起来后接下来就是开始配置HBase,从&下载
上传到/home/hadoop下并tar xzvf&&加压缩,之后在此路径下我们就能看到hbase-0.96.0-hadoop2目录,接着我们开始进行配置:
1.cd 到/home/hadoop/hbase-0.96.0-hadoop2/conf下 vi hbase-env.sh设置正确的java_home.如export JAVA_HOME=/usr/java/jdk1.6,另外如果是由hbase自己管理zookeeper,还需要设置export
HBASE_MANAGES_ZK=true&,如果不是,则还需要再下载zookeeper进行配置。
2.如果是单机配置,只需要如下配置hbase-site.xml:& &&
但一般我们都会配置集群环境,则需要如如下配置hbase-site.xml:
&configuration&
& &property&
& &&name&hbase.rootdir&/name&
& &&value&hdfs://152server:9000/hbase&/value&
& &/property&
&property&&
&name&hbase.master&/name&&
&value&hdfs://152server:60000&/value&&
&/property&&
& &property&
& & &name&hbase.zookeeper.property.dataDir&/name&
& & &value&/home/hadoop/data/zookeeper&/value&
& &/property&
& &property&
& & &name&hbase.cluster.distributed&/name&
& & &value&true&/value&
& &/property&
&property&
&name&hbase.zookeeper.quorum&/name&
&value&server2,server3&/value& &&!--此处不能同时配置namenode所在的服务器 --&
&/property&
&/configuration&
3.vi&regionservers 配置regionServer,即真正存放数据信息的地方,这里我们把server2,server3设置为regionserver。每个节点一行
& & &&server2& &&
& & & &server3
(七)hbase基本的配置差不多了。但还有最重要的一个,我们从hbase的lib目录下我看到它是基于hadoop2.1.0的,所以我们需要用我们的hadoop2.2.0下的jar包来替换2.1的,保证版本的一致性,hadoop下的jar包都是在$HADOOP_HOME/share/hadoop下的,我们先cd 到 /home/hadoop/hbase-0.96.0-hadoop2/lib下运行命令:
rm -rf hadoop*.jar删掉所有的hadoop相关的jar包,然后运行:
find /home/hadoop/hadoop2.2.0/share/hadoop -name &hadoop*jar& | xargs -i cp {}&/home/hadoop/hbase-0.96.0-hadoop2/lib/&&拷贝所有hadoop2.2.0下的jar包hbase下进行hadoop版本的统一
(八)接下来就可以启动hbase了,cd到/home/hadoop/hbase-0.96.0-hadoop2/bin下执行./start-hbase.sh,如果启动成功,用jps就能查看到HMaster应用已经起来了,而且在server2等其他regionServer上能看到HRegionServer和HQuorumPeer。你也可以在此bin目录下运行./hbase
shell进入hbase的client端,运行list或create 'test','cf1' 等命令检查一下是否成功启动,同时你也可以到浏览器打开&&看界面端。
-------------------------------------华丽分割线 edited By Dimamcro---------------------------
(九)接下来开始安排配置hive,这个hive目前最新的版本是0.12,不过0.13版本其实已经可以编译出来了,只不过截止到我写这篇文章时hive官网上目前还没有更新,我们先从&上下载,但是请注意,此版本基于是基于hadoop1.3和hbase0.94的,我们需要对此做一些改造,一步一步来,我们先把下载到的
上次到server1的/home/hadoop下,tar xzvf&进行解压缩,这样我们就得到了/home/hadoop/hive-0.12.0,我们cd到此目录下的lib目录可以看到里面基于的hbase
jar包是0.94的,无论是否与hbase整合,其配置都是一样的,不同的地方在于建表的时候是否使用hive-hbase-handle,因此先熟悉配置hvie的过程。
1.cd 到&/home/hadoop/hive-0.12.0/conf下vi hive-site.xml,其大致配置内容如下:
&configuration&
&property&
& &name&hive.metastore.warehouse.dir&/name&
& &value&hdfs://152server:9000/hive/warehousedir&/value&
&/property&
&property&
& &name&hive.exec.scratchdir&/name&
& &value&hdfs://152server:9000/hive/scratchdir&/value&
&/property&
&property&
& &name&hive.querylog.location&/name&
& &value&/home/hadoop/hive-0.12.0/logs&/value&
&/property&
&property& &
& &name&javax.jdo.option.ConnectionURL&/name& &
& &value&jdbc:mysql://192.168.114.32:3306/hiveMeta?createDatabaseIfNotExist=true&/value& &
&/property& &
&property& &
& &name&javax.jdo.option.ConnectionDriverName&/name& &
& &value&com.mysql.jdbc.Driver&/value& &
&/property& &
&property& &
& &name&javax.jdo.option.ConnectionUserName&/name& &
& &value&root&/value& &
&/property& &
&property& &
& &name&javax.jdo.option.ConnectionPassword&/name& &
& &value&111111&/value& &
&/property&&
&property&
& &name&hive.aux.jars.path&/name&
&&&value&file:///home/hadoop/hive-0.12.0/lib/hive-hbase-handler-0.13.0-SNAPSHOT.jar,file:///home/hadoop/hive-0.12.0/lib/protobuf-java-2.5.0.jar,
file:///home/hadoop/hive-0.12.0/lib/hbase-client-0.96.0-hadoop2.jar,file:///home/hadoop/hive-0.12.0/lib/hbase-common-0.96.0-hadoop2.jar,file:///
home/hadoop/hive-0.12.0/lib/zookeeper-3.4.5.jar,file:///home/hadoop/hive-0.12.0/lib/guava-11.0.2.jar&/value&
&/property&
&property& &
& &name&hive.metastore.uris&/name& &
& &value&thrift://192.168.113.178:9083&/value& &
&/property& &
&/configuration&
& &&& &&& & 说明,其中的红色字体部分是配置与mysql连接的,因为hive需要用到关系型数据库来存储元信息,目前只支持mysql,所以我们需要提前转好一个mysql,创建mysql
的是记得设置字符集为latin1,否则后期建表会出问题。具体hive关联mysql的配置如下:
另外如果我们将来需要通过jdbc/odbc的方式来连接hive,需要启动metastore shfift,因此必须配置hive.metastore.uris。而hive.aux.jars.path是与hbase整合的时候需要用到的jar包,必须加上。
(十)做完基本的hive配置后,接下来一个比较大的步骤是替换一些jar包,因为你直接下载得到的hive是基于hadoop1.3和hbase0.94的,所以必须进行替换,因为我们的hbse0.96是基于hadoop2.2的,所以我们必须先解决hive的hadoop版本问题,目前我们从官网下载的hive都是用1.几的版本编译的,因此我们需要自己下载源码来用hadoop2.X的版本重新编译hive,这个过程也很简单,只需要如下步骤:
&&&&&&1.先从&地址把源码下载下来,如果你不知道怎么下载,先安装一个svn客户端或在Eclipse用svn插件来下载。比如此处我们把源码下到/home/hadoop/branch-0.12下
&&& & 2.编译是需要maven的,如果你机器没有配置maven,需要从&下载maven,然后解压出来并在PATH下把$maven_home/bin加入,然后在dos下或者shell下运行mvn
-v就能& &&& &&&
&&知道maven是否配置成功
&&& &&3.配置好maven开始编译hive,我们cd到下载源码的&目录,然后运行mvn
clean package -DskipTests -Phadoop-2开始编译
&&& & 4.编译好后的新jar包是存放在各个模块下的target的,这些新jar包的名字都叫hive-***-0.13.0-SNAPSHOT.jar,***为hive下的模块名,我们需要运行命令将其拷贝到hive-0.12.0/lib下。当然如果是你在windows下编译的,直接&
&&查找拷贝到lib下就好了。find /home/hadoop/branch-0.12 &-name &hive*SNAPSHOT.jar&|xargs
-i cp {} /home/hadoop/hive-0.12.0/lib。拷贝过去后我们比照着删除原lib下对应的0.12版本的jar包。
&&& &&&5. & 接着我们同步hbase的版本,先cd到hive0.12.0/lib下,将hive-0.12.0/lib下hbase-0.94开头的那两个jar包删掉,然后从/home/hadoop/hbase-0.96.0-hadoop2/lib下hbase开头的包都拷贝过来
& &&& &&& &&&
&&& &&& &&&
&&& find /home/hadoop/hbase-0.96.0-hadoop/lib -name &hbase*.jar&|xargs -i cp {} ./
&&& &&&6.基本的同步完成了,重点检查下zookeeper和protobuf的jar包是否和hbase保持一致,如果不一致,已hbase的为准提过到hive下即可。
7.如果用mysql当原数据库,别忘了找一个mysql的jdbcjar包mysql-connector-java-3.1.12-bin.jar也拷贝到hive-0.12.0/lib下
(十一)启动hive,这个又可以分为启动metastore和hiveserver,其中metastore用于和mysql之间的表结构创建或更新时通讯,hiveserver用于客户端连接,这这个都要启动,具体的启动命令:
启动metastore:hive --service metastore &&-hiveconf
hbase.zookeeper.quorum=server2,server3 -hiveconf hbase.zookeeper.property.clientPort=2181&(远程mysql需要启动)
启动hiveservice:hive --service hiveserver&&-hiveconf hbase.zookeeper.quorum=server2,server3,179server
-hiveconf hbase.zookeeper.property.clientPort=2181&(启动服务,这样jdbc:hive就能连上,默认10000端口,后面的部分一定要带上,否则用eclipse连接不上的)
&起来后我们在eclipse就可以使用jdbc:hive来连接了。如
& &&& &&Class.forName(&org.apache.hadoop.hive.jdbc.HiveDriver&);
&&&&&&&&Connection&conn&=&DriverManager.getConnection(&jdbc:hive://server1:10000/hiveMeta&,&root&,&111111&);
&&&&&&&&return&
其实使用上和普通的数据库已经很相似了,除了建表的语句有一些差别。
(十二)当然你也可以在hive-0.12.0/bin运行hive&-hiveconf
hive.root.logger=DEBUG,console&-hiveconf hbase.zookeeper.quorum=server2,server3&-hiveconf
hbase.zookeeper.property.clientPort=2181
进入hive客户端,运行查看表的情况或者运行create table test3(time string,amount string) row format&delimited
fields terminated by '\t'&lines terminated by '\n'&stored
as textfile; & 创建本地表,非hbase对应表,或者运行CREATE TABLE hivetest(key int, val
string) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES (&hbase.columns.mapping& = &:key,cf1:val&)
TBLPROPERTIES (&hbase.table.name& = &hivetest&);来创建于hbase关联的表,这样在hbase shell下也能看到,两笔新增数据都能实时看到。
(十三)至此,整个整合过程都完成了,你可以在linux用各种shell来测试,也可以通过eclipse连接到hive来测试,和通过jdbc连接普通数据库一致,不过有一些注意分享给大家:
1.如果要insert 与hbase整合的表,不能像本地表一样load,需要利用已有的表进行,如insert overwrite table hivetest select * from
&其中test的语句(create table test4(key int,val string) row format delimited fields terminated by '\t' lines terminated by '\n'&),注意类型要一致,否则用insert
overwrite table hivetest select * 导不进去数据
2.在hive中的 修改能同步反应到hbase中,但是如果在hbase中对新的列做了数据修改,则不会反应到hive中,因为hive的原数据文件并没有更新。
(十四)说明,这篇文章前后写了三天,都是利用零散的时间,但是我觉得很值,一是给自己一个总结的机会,而且前期自己研究的时候得到了网上很多朋友的帖子启示,有很大的帮助,希望我写的对大家也能有帮助,技术在于分享,当然希望大家转载的时候保留我的署名:Dimmacro.也不枉我码字一番。&
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:13441次
排名:千里之外
评论:18条
(1)(1)(2)(3)(2)(3)}

我要回帖

更多关于 hadoop集群配置 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信