一、前言
接触HBase已近半年,从一无所知到问题的解决,在数据落地方面也有了一定的了解,在此记录这半年来碰到的一些问题和对一些数据落地方面的见解,本篇主要介绍一下hbase安装方面的信息
二、安装环境
对于生产环境而言,一个hbase集群可能包含几百上千机器,集群必不可少的几个组件,如Zookeeper, Hbase, Hadoop等,其中Zookeeper一般是奇数台且独立部署,HBase方面主要包括Master结点和RegionServer结点,Hadoop方面包括NameNode和DataNode,在这里模拟生产环境部署,准备了三台机器,不过ZK是一起部署的,没有单独再隔离部署,同时一些配置也简化了,以尽量保持简单。
机器方面,最好是硬件、OS保持一致,HBase和Hadoop方面,主要是版本要匹配,网上也有相应的说明,这里就不贴了。假设三台机器IP分别为:10.1.1.1,10.1.1.2,10.1.1.3 ,HBase版本是0.98.6.1, Hadoop版本是2.2.0, 部署机器对应关系如下
三、安装步骤
3.1 信任关系建立
由于hbase集群需要通过ssh进行免密交互,所以master和namenode机器需要分别和RegionServer和DataNode建立SSH免密信任关系,关于SSH免密登陆,主要是两类OpenSSH和SSH2两种,要确认机器OS上是用的OpenSSH还是SSH2,我机器是用的OpenSSH, 并用如下脚本批量生成SSH KEY。
#!/usr/bin/python # -*- coding: utf-8 -*- import sys,os import paramiko if len(sys.argv) > 1: username = sys.argv[1] else: username = ‘root‘ home_dir = ‘/%(user)s‘%{‘user‘:username} id_rsa_pub = ‘%s/.ssh/id_dsa.pub‘ %home_dir if not id_rsa_pub: print ‘id_rsa.pub Does not exist!‘ sys.exit(0) file_object = open(‘%s/.ssh/config‘ %home_dir ,‘w‘) file_object.write(‘StrictHostKeyChecking no\n‘) #file_object.write(‘UserKnownHostsFile /dev/null‘) file_object.close() def up_key(host,port,user,passwd): try: s = paramiko.SSHClient() s.set_missing_host_key_policy(paramiko.AutoAddPolicy()) s.connect(host, port, user, passwd) t = paramiko.Transport((host, port)) t.connect(username=user, password=passwd) sftp =paramiko.SFTPClient.from_transport(t) print ‘create Host:%s .ssh dir......‘ %host stdin,stdout,stderr=s.exec_command(‘mkdir ~/.ssh/‘) print ‘upload id_rsa.pub to Host:%s......‘ %host sftp.put(id_rsa_pub, "/tmp/temp_key1") #stdin,stdout,stderr=s.exec_command(‘ssh-keygen -f /tmp/temp_key -i >> ~/.ssh/authorized_keys‘) stdin,stdout,stderr=s.exec_command(‘cat /tmp/temp_key1 >> ~/.ssh/authorized_keys‘) stdin,stdout,stderr=s.exec_command(‘chmod -R g-w /data/home/mta/.ssh/‘) stdin,stdout,stderr=s.exec_command(‘rm /tmp/temp_key1‘) print ‘host:%s@%s auth success!\n‘ %(user, host) #logger.logger("%(h)s\t%(u)s"%{‘h‘:host,‘u‘:user}) s.close() t.close() except Exception, e: import traceback traceback.print_exc() try: s.close() t.close() except: pass def run(): for line in open(‘ip.list‘): line = line.strip(‘\n‘) host,port,user,passwd = line.split(‘:‘) fullhost = "hbase-"+host.replace(".","-") up_key(host, int(port), user, passwd) up_key(fullhost, int(port), user, passwd) if __name__ == ‘__main__‘: run()
原文:http://www.cnblogs.com/ballwql/p/6351732.html