Hadoop- Zookeeper-Hbase搭建

Hadoop- Zookeeper-Hbase搭建

 

1 Hadoop集群搭建

1.1免密码设置

通过客户端连接到linux集群(2台以上)后分别进行如下操作:

ssh-keygen -t rsa 生成密钥对

缺省目录

两次enter

ls -a 可以看到.ssh进入.ssh目录后可以看到id_rsa id_rsa.pub文件

把公钥文件拷贝到另一台机器

--192.168.160.128操作

scp ./id_rsa.pub  root@192.168.160.129:/root/.ssh/authorized_keys

登陆到129机器上进行如下操作:

cd

cd .ssh

cat id_rsa.pub

copy id_rsa.pub addto authorized_keys

 cat~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

将本机(129)的公钥添加进authorized_keys中,这样允许本机通过ssh的形式免密码登录注意使用>>,而不是>,因为如果其它主机(A)也采用免登陆的形式登录,也可以把主机A的公钥添加到authorized_keys文件中。这样主机A就可以免登陆ssh到本机了。

执行chmod 600authorized_keys(否则ssh localhost可能报错)

最终结果:机器中每台机器的authorized_keys文件中含有机器其他机器的公钥。

 

1.2 hadoop集群搭建配置文件修改

背景:两台机器192.168.160.128(hd1) 、192.168.160.129(hd2)机器部署目录相同,jdk环境已具备且目录路径都相同。

1. 修改hadoop-env.sh配置文件

修改java环境的路径

grep -v "^#" ./hadoop-env.sh | grep -v "^$" 

 

2.修改core-site.xml配置文件

指定hadoop临时路径


 

3.修改hdfs-site.xml配置文件

 

 

4.修改mapred-site.xml配置文件

 

 

5.修改masters文件

 

6.修改slaves文件

 

7.查看防火墙状态

chkconfig iptables off

 

8. 拷贝到其他各个节点上


9.格式化分布式文件系统

bin/hadoop namenode -format

 

10.启动守护进程

bin/start-all.sh

 

1.3 hadoop操作

cd /home/robinjun/hadoop-1.1.2/bin 
1.
创建文件夹的方法 
./hadoop fs -mkdir testDir 

bin/hadoop fs -put /home/robinjun/input in 
bin/hadoop jar hadoop-examples-1.1.2.jar wordcount in out 
bin/hadoop fs -ls ./out/* 
bin/hadoop fs -cat ./out/part-r-00000 
http://192.168.160.128:50030/jobtracker.jsp 
http://192.168.160.128:50070/dfshealth.jsp 

安全模式实验 
bin/hadoop dfsadmin -safemode enter 
bin/hadoop fs -put ../xxx ./in   上传文件到HDFS
bin/hadoop fs -ls ./in 
bin/hadoop fs -rmr ./in/test1.txt 
bin/hadoop fs -ls ./in 
bin/hadoop dfsadmin -safemode leave 
bin/hadoop fs -put ../xxx ./in 
bin/hadoop fs -ls ./in 
bin/hadoop fs -rmr ./in/xxx 
bin/hadoop fs -ls ./in 
/home/robinjun/input 
验证回收站功能实验 

在conf/core-site.xml添加配置:


重启集群
bin/hadoop fs -ls 
bin/hadoop fs -rmr ./out 
bin/hadoop fs -ls 
bin/hadoop fs -ls ./.Trash 
bin/hadoop fs -ls ./.Trash/Current 
bin/hadoop fs -ls ./.Trash/Current/user 
bin/hadoop fs -ls ./.Trash/Current/user/root 
bin/hadoop fs -ls ./.Trash/Current/user/root/out 

恢复及清空 
bin/hadoop fs -mv ./.Trash/Current/user/root/out ./ 
bin/hadoop fs -ls 
bin/hadoop fs -ls ./out/* 
bin/hadoop fs -expunge 
bin/hadoop fs -ls ./.Trash/Current/user/ 
..... 

 

将HDFS的文件复制到本地

bin/hadoop fs -get ./in/xxxx ../tmp

 

删除HDFS下的文档

bin/hadoop fs -rmr ./in/xxx

查看HDFS下某个文件的内容

bin/hadoop fs -ls ./in

bin/hadoop fs -cat ./in/test1.txt

 

查看HDFS基本统计信息

bin/hadoop dfsadmin -report

 

怎样添加节点?

在新节点安装好hadoop

把namenode的有关配置文件复制到该节点

修改masters和slaves文件,增加该节点

设置ssh免密码进出该节点

单独启动该节点上的datanode和tasktracker(hadoop-daemon.sh start datanode/tasktracker)

运行start-balancer.sh进行数据负载均衡

是否要重启集群?

 

负载均衡

作用:当节点出现故障,或新增加节点时,数据块分布可能不均匀,负载均衡可以重新平衡各个datanode上数据块的分布

./start-balancer.sh

1.4 HDFS的命令行操作

将本地的一个文件复制到HDFS中

hdoop fs -copyFormLocal testInput/hello.txthdfs://localhost/user/admin/In/hello.txt

注:使用fs命令可以省略URL中的访问协议和主机名,而直接使用配置文件core-site.xml中默认属性

值hdfs://localhost

hadoop fs -copyFromLocaltestInput/hello.txt /user/amdin/In/hello.txt

 

其次,看如何将HDFS中的文件拷贝到本地

hadoop fs -copyToLocal/user/admin/In/hello.txt testInput/hello.copy.txt

创建文件夹的方法

hdoop fs -mkdir testDir

 

上传文件到HDFS

 

将HDFS的文件复制到本地

 

2 Zookeeper

1.单机安装

单机安装非常简单,只要获取到 Zookeeper 的压缩包并解压到某个目录如:/home/zookeeper-3.2.2 下,Zookeeper 的启动脚本在 bin 目录下,Linux 下的启动脚本是 zkServer.sh

 

2.配置

tickTime=2000

dataDir=D:/devtools/zookeeper-3.2.2/build

clientPort=2181

tickTime:这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。

dataDir:顾名思义就是 Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。

clientPort:这个端口就是客户端连接Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。

3.安装:集群模式

集群模式除了上面的三个配置项还要增加下面几个配置项: 
initLimit=5 
syncLimit=2 
server.1=192.168.211.1:2888:3888 
server.2=192.168.211.2:2888:3888

4.配置

initLimit:这个配置项是用来配置 Zookeeper接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒 
syncLimit:这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 2*2000=4 秒 
server.A=B:C:D:其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。 
除了修改 zoo.cfg 配置文件,集群模式下还要配置一个文件 myid,这个文件在 dataDir 目录下,这个文件里面就有一个数据就是 A 的值,Zookeeper 启动时会读取这个文件,拿到里面的数据与 zoo.cfg 里面的配置信息比较从而判断到底是那个 server。

5.zoo.cfg


3 Hbase的安装

1.Hbase安装:单机模式

下载及解压hbase安装包

修改conf/hbase-env.sh脚本,设置环境变量

编辑hbase-site.xml进行配置

启动Hbase

验证Hmaster已经启动

进入shell

 

1.修改hbase-env.sh

修改内容:        #java安装目录

                            export JAVA_HOME=/usr/java/jdk1.6.0_24

                           #Hbase日志目录
                            exportHBASE_LOG_DIR=/root/hadoop/hbase-0.94.6.1/logs

                           #如果使用HBase自带的Zookeeper值设成true 如果使用自己安装的Zookeeper需要将该值设为false

                            export HBASE_MANAGES_ZK=true


 

2.修改hbase-site.xml

hbase.rootdir指定Hbase数据存储目录
hbase.cluster.distributed 指定是否是完全分布式模式,单机模式和伪分布式模式需要将该值设为false
hbase.master指定Master的位

hbase.zookeeper.quorum 指定zooke的集群,多台机器以逗号分隔


 

3.修改conf下的regionservers文件

 

4. Hadoop hdfs-site.xml

 <property>

        <name>dfs.datanode.max.xcievers</name>

        <value>4096</value>

 </property>

该参数限制了datanode所允许同时执行的发送和接受任务的数量,缺省为256hadoop-defaults.xml中通常不设置这个参数。

这个限制看来实际有些偏小,高  负载

5.拷贝hbase到所有的节点

6.启动命令

bin/start-hbase.sh

4 Hbase Shell

查询数据库状态

hbase(main):024:0>status

3 servers, 0 dead,1.0000 average load

 

查询数据库版本

hbase(main):025:0>version

0.90.4, r1150278,Sun Jul 24 15:53:29 PDT2011

 

创建表

hbase(main):011:0>create'member','member_id','address','info'

0 row(s) in 1.2210seconds

 

查看表信息

hbase(main):012:0>list

TABLE

member

1 row(s) in 0.0160seconds

hbase(main):006:0>describe 'member'

DESCRIPTION ENABLED

{NAME => 'member', FAMILIES =>[{NAME=> 'address', BLOOMFILTER => 'NONE', REPLICATION_SCOPE => '0',true

VERSIONS => '3', COMPRESSION =>'NONE',TTL => '2147483647', BLOCKSIZE => '65536', IN_MEMORY =>'false', BLOCKCACHE => 'true'}, {NAME =>'info', BLOOMFILTER => 'NONE',REPLICATION_SCOPE => '0', VERSI

ONS => '3', COMPRESSION => 'NONE',TTL=> '2147483647', BLOCKSIZE => '65536', IN_MEMORY => 'false',

BLOCKCACHE => 'true'}]}

1 row(s) in 0.0230seconds

 

删除列族:alter、disable、enable命令

hbase(main):003:0>alter 'member',{NAME=>'member_id',METHOD=>'delete'}

ERROR: Table memberis enabled. Disable itfirst before altering.

hbase(main):004:0>disable 'member'

0 row(s) in 2.0390seconds

hbase(main):005:0>alter'member',{NAME=>'member_id',METHOD=>'delete'}

0 row(s) in 0.0560seconds

hbase(main):008:0> enable 'member'

0 row(s) in 2.0420seconds

 

列出所有的表

hbase(main):028:0>list

TABLE

member

temp_table

2 row(s) in 0.0150seconds

 

删除表

hbase(main):029:0>disable 'temp_table'

0 row(s) in 2.0590seconds

hbase(main):030:0>drop 'temp_table'

0 row(s) in 1.1070seconds

 

查询一个表是否存在

hbase(main):021:0>exists 'member'

Table member doesexist

0 row(s) in 0.1610seconds

 

判断表是否enable或disable

hbase(main):034:0>is_enabled 'member'

true

0 row(s) in 0.0110seconds

hbase(main):032:0>is_disabled 'member'

false

0 row(s) in 0.0110seconds

 

插入记录

put'member','scutshuxue','info:age','24'

put'member','scutshuxue','info:birthday','1987-06-17'

put'member','scutshuxue','info:company','alibaba'

put'member','scutshuxue','address:contry','china'

put'member','scutshuxue','address:province','zhejiang'

put'member','scutshuxue','address:city','hangzhou'

put'member','xiaofeng','info:birthday','1987-4-17'

put'member','xiaofeng','info:favorite','movie'

put'member','xiaofeng','info:company','alibaba'

put'member','xiaofeng','address:contry','china'

put'member','xiaofeng','address:province','guangdong'

put'member','xiaofeng','address:city','jieyang'

put'member','xiaofeng','address:town','xianqiao'

 

获取一个行健的所有数据

hbase(main):001:0>get'member','scutshuxue'

COLUMN CELL

address:citytimestamp=1321586240244,value=hangzhou

address:contrytimestamp=1321586239126,value=china

address:provincetimestamp=1321586239197,value=zhejiang

info:age timestamp=1321586238965,value=24

info:birthday timestamp=1321586239015,value=1987-06-17

info:companytimestamp=1321586239071,value=alibaba

6 row(s) in 0.4720seconds

 

获取一个行键,一个列族的所有数据

hbase(main):002:0>get'member','scutshuxue','info'

COLUMN CELL

info:age timestamp=1321586238965,value=24

info:birthday timestamp=1321586239015,value=1987-06-17

info:companytimestamp=1321586239071,value=alibaba

3 row(s) in 0.0210seconds

 

获取一个行键,一个列族中一个列的所有数据

hbase(main):002:0>get'member','scutshuxue','info:age'

COLUMN CELL

info:age timestamp=1321586238965,value=24

1 row(s) in 0.0320seconds

 

更新一条记录

hbase(main):004:0>put'member','scutshuxue','info:age' ,'99'

0 row(s) in 0.0210seconds

hbase(main):005:0>get'member','scutshuxue','info:age'

COLUMN CELL

info:age timestamp=1321586571843,value=99

1 row(s) in 0.0180seconds

 

通过timestamp来获取数据

hbase(main):010:0>get'member','scutshuxue',{COLUMN=>'info:age',TIMESTAMP=>1321586238965}

COLUMN CELL

info:age timestamp=1321586238965,value=24

1 row(s) in 0.0140seconds

hbase(main):011:0>get'member','scutshuxue',{COLUMN=>'info:age',TIMESTAMP=>1321586571843}

COLUMN CELL

info:age timestamp=1321586571843,value=99

1 row(s) in 0.0180seconds

 

全表扫描

hbase(main):013:0>scan 'member'

结果略

 

删除指定行键的字段

hbase(main):016:0>delete'member','temp','info:age'

0 row(s) in 0.0150seconds

hbase(main):018:0>get 'member','temp'

COLUMN CELL

0 row(s) in 0.0150seconds

 

删除整行

hbase(main):001:0>deleteall'member','xiaofeng'

0 row(s) in 0.3990seconds

 

查询表中有多少行

hbase(main):019:0>count 'member'

2 row(s) in 0.0160seconds

 

清空表

hbase(main):035:0>truncate 'member'

Truncating 'member'table (it may take awhile):

- Disabling table...

- Dropping table...

- Creating table...

0 row(s) in 4.3430seconds

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值