1.安装前的准备
一台虚拟机CentOS7,配置好环境变量、装配好jdk,对其进行克隆,一共3台虚拟机
2.分配好ip地址
-192.168.8.128 master
-192.168.8.129 slave1
-192.168.8.130 slave2
2.软件准备:
项目 | 版本 |
---|---|
Hadoop | 2.7.5 |
Hbase | 1.2.6 |
Zookeeper | 3.3.6 |
3.Hadoop安装
3.1. 修改Master主机下hadoop配置文件
vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_111
export PATH=$JAVA_HOME/bin:$PATH
export HADOOP_HOME=/data/yunva/hadoop-2.7.3
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
3.2.Master主机上添加Hosts映射关系
vi etc/hosts
192.168.8.128 master
192.168.8.129 slave1
192.168.8.130 slave2
配好Master主机的hosts文件之后,scp文件到slave1,slave2
scp /etc/hosts slave1:/etc/hosts
scp /etc/hosts slave1:/etc/hosts
3.3 修改core-site.xml
<configuration>
<property>
<name>hadoop.tmp.dirname>
<value>/root/bigdata/hadoop-2.7.5/tmpvalue>
property>
<property>
<name>fs.default.namename>
<value>hdfs://master:9000value>
property>
<property>
<name>io.file.buffer.sizename>
<value>131072value>
property>
configuration>
3.3 修改hadoop-env.sh、yarn-env.sh,末尾追加下列内容:
export JAVA_HOME=/usr/jdk
3.4 修改hdfs-site.xml
# 先创建hadoop的数据和用户目录
# mkdir -p /root/bigdata/hadoop-2.7.5/hadoop/name
# mkdir -p /root/bigdata/hadoop-2.7.5/hadoop/data
------------------------------------------------------------
<configuration>
<property>
<name>dfs.name.dirname>
<value>/root/bigdata/hadoop-2.7.5/hadoop/namevalue>
property>
<property>
<name>dfs.data.dirname>
<value>/root/bigdata/hadoop-2.7.5/hadoop/datavalue>
property>
<property>
<name>dfs.replicationname>
<value>3value>
property>
<property>
<name>dfs.namenode.secondary.http-addressname>
<value>master:9001value>
property>
<property>
<name>dfs.webhdfs.enabledname>
<value>truevalue>
property>
<property>
<name>dfs.permissionsname>
<value>falsevalue>
property>
configuration>
3.5 修改mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.namename>
<value>yarnvalue>
property>
configuration>
3.6 修改master的slave文件,实现hadoop自动化启动集群
# vi /root/bigdata/hadoop-2.7.5/etc/hadoop/slave
slave1
slave2
至此,Master主机上的hadoop已经配置完毕,我们需要将其复制到slave1,2主机
# scp -r /root/bigdata/hadoop-2.7.5/ slave1:/root/bigdata
# scp -r /root/bigdata/hadoop-2.7.5/ slave2:/root/bigdata
确定好上述的各个环节都ok之后,进行启动hadoop集群操作
master主机:
格式化namenode,第一次启动服务前执行的操作,以后不需要执行
# cd /root/bigdata/hadoop-2.7.5/bin
# hadoop namenode -format
# cd ../sbin
# start-all.sh #启动hadoop集群
# jps #查看进程
hadoop自带的web控制台GUI
1.资源管理GUI:http://localhost:8088/
2.节点管理GUI:http://localhost:50070/
若上面的操作无误,进去web页面无效,校验一下防火墙是否出了问题!
单机版的hadoop和伪分布式版本人尚未尝试,还是贴近实战的分布式集群入手学习来的实在,虽然很多坑.
4.Zookeeper集群安装配置
4.1 host映射配置:
保持hadoop的配置即可:
192.168.8.128 master
192.168.8.129 slave1
192.168.8.130 slave2
4.2 目录conf/zoo_sample.cfg文件复制一份为zoo.cfg,追加参数配置
# 服务器与客户端之间交互的基本时间单元(ms)
tickTime=2000
# The number of ticks that the initial
# zookeeper所能接受的客户端数量
initLimit=5
# The number of ticks that can pass between
# 服务器和客户端之间请求和应答之间的时间间隔
syncLimit=2
# 保存zookeeper数据,日志的路径
dataDir=/root/bigdata/zookeeper-3.3.6/data
dataLogDir=/root/bigdata/zookeeper-3.3.6/logs
# 客户端与zookeeper相互交互的端口
clientPort=2181
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
#server.A=B:C:D 其中A是一个数字,代表这是第几号服务器;B是服务器的IP地址;#C表示服务器与群集中的“领导者”交换信息的端口;当领导者失效后,D表示用来执行选#举时服务器相互通信的端口。
4.3 创建对应的日志路径和数据路径
根据zoo.cfg里面的dataDir和dataLogDir路径,创建对应的路径,
并在dataDir下创建myid,根据server.A=B:C:D在对应的节点下echo A > myid
4.4 scp当前的zookeeper文件到slave1和slave2主机上
#scp /root/bigdata/zookeeper slave1:/root/bigdata/zookeeper
#scp /root/bigdata/zookeeper slave2:/root/bigdata/zookeeper
4.5 启动节点,master主机在bin目录下执行zkServer.sh start-foreground,之后在每个节点下,有序的启动,忽略一段报错信息,等平稳下来后,查看这块Server.sh status状态.
可能遇到的问题,请参考这个网址:
http://blog.csdn.net/weixin_37550903/article/details/78091670
5. HBase集群安装配置
5.1 修改追加conf下hbase-env.sh
export JAVA_HOME=/usr/jdk
export HBASE_LOG_DIR=/root/bigdata/hbase-1.2.6/logs
export HBASE_MANAGES_ZK=false #关闭HBase自带的Zookeeper,使用自己搭建的Zookeeper集群
export HADOOP_HOME=/root/bigdata/hadoop-2.7.5
export HBASE_PID_DIR=/root/bigdata/hbase-1.2.6/pids #hbase的pid,用做关闭hbase识别
5.2 修改conf下hbase-site.xml
<property>
<name>hbase.tmp.dirname>
<value>/root/bigdata/hbase-1.2.6/tmpvalue>
property>
<property>
<name>zookeeper.session.timeoutname>
<value>3600000value>
property>
<property>
<name>hbase.rootdirname>
<value>hdfs://master:9000/hbasevalue>
property>
<property>
<name>hbase.mastername>
<value>mastervalue>
property>
<property>
<name>hbase.cluster.distributedname>
<value>truevalue>
property>
<property>
<name>hbase.zookeeper.property.clientPortname>
<value>2181value>
property>
<property>
<name>hbase.zookeeper.quorumname>
<value>master,slave1,slave2value>
property>
<property>
<name>zookeeper.session.timeoutname>
<value>60000000value>
property>
<property>
<name>dfs.support.appendname>
<value>truevalue>
property>
<property>
<name>hbase.hregion.majorcompactionname>
<value>0value>
property>
<property>
<name>hbase.hregion.max.filesizename>
<value>536870912000value>
property>
<property>
<name>hbase.hstore.blockingStoreFilesname>
<value>2100000000value>
property>
<property>
<name>hbase.regionserver.handler.countname>
<value>100value>
property>
<property>
<name>hbase.master.info.portname>
<value>60010value>
property>
5.3 修改conf下的regionservers文件,文档末尾追加:
slave1
slave2
5.4 scp远程复制hbase到slave1,1主机上
#scp /root/bigdata/hbase-1.2.6 slave1:/root/bigdata/hbase-1.2.6
#scp /root/bigdata/hbase-1.2.6 slave2:/root/bigdata/hbase-1.2.6
5.5 在master的bin目录执行start-hbase.sh,启动集群。备注:如果遇到无关关闭hbase的情况,kill -9 暴力解决
5.6 测试:http://192.168.8.128:60010/master-status,能看到下图说明就成功啦 如果看不到的话,就查看hbase-site.xml是否有这段配置代码:
hbase.master.info.port
60010
没有的话加上,重启hbase即可,另外提一下,hbase启动之前,hadoop和zookeeper最好先开着,至于原因日后再深究`
![这里写图片描述](https://img-blog.csdn.net/20180402135028237?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTM1NTMzMDk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
5.7 6.进入控制台 sbin目录下,输入hbase shell
Hbase代码调试:
hadoop自带的web控制台GUI
1.资源管理GUI:http://localhost:8088/
2.节点管理GUI:http://localhost:50070/
查看HBase状态:
http://192.168.1.128:60010/master-status
获取jar包:
/opt/cloudera/parcels/CDH/lib/hbase
进入命令行
[root@hadoop1 ~]# hbase shell
退出命令行
hbase(main):001:0> exit
查看所有表
hbase(main):001:0> list
TABLE
0 row(s) in 1.9500 seconds
=> []
create '表名称','列名称1',...,'列名称n'
eg:建立一个表scores,有两个列族grad和courese。
hbase(main):004:0> create 'scores','grad','courese'
0 row(s) in 1.5820 seconds
=> Hbase::Table - scores
hbase(main):005:0> list
TABLE
scores
1 row(s) in 0.0080 seconds
=> ["scores"]
添加记录
put '表名','行键名','列名','单元格值','时间戳'
时间戳可以省略。
hbase(main):009:0> put 'scores','Tom','grad:','5'
hbase(main):011:0> put 'scores','Tom','courese:math','100'
hbase(main):012:0> put 'scores','Tom','courese:art','100'
hbase(main):013:0> put 'scores','Mark','grad','6'
hbase(main):014:0> put 'scores','Mark','courese:english','120'
hbase(main):015:0> put 'scores','Mark','courese:chinese','108'
查看表所有记录(全面扫描)
scan 'scores'
查找某条记录
hbase(main):020:0> get 'scores','Mark'
COLUMN CELL
courese:chinese timestamp=1435491529683, value=108
courese:english timestamp=1435491508206, value=120
grad: timestamp=1435491484521, value=6
3 row(s) in 0.0520 seconds
hbase(main):021:0> get 'scores','Mark','grad'
COLUMN CELL
grad: timestamp=1435491484521, value=6
1 row(s) in 0.0390 seconds
base> count 'ns1:t1'
hbase> count 't1'
hbase> count 't1', INTERVAL => 100000
hbase> count 't1', CACHE => 1000
hbase> count 't1', INTERVAL => 10, CACHE => 1000
统计一般比较耗时,使用mapreduce进行统计,统计结果会缓存,默认是10行,统计间隔默认是1000行。
hbase(main):038:0> count 'scores'
2 row(s) in 0.0290 seconds
=> 2
增加一列族
hbase(main):048:0> alter 'scores',NAME=>'info'
Updating all regions with the new schema...
0/1 regions updated.
1/1 regions updated.
Done.
0 row(s) in 2.4330 seconds
删除一个列族
hbase(main):053:0> alter 'scores',NAME=>'NAME=info',METHOD=>'delete'
Updating all regions with the new schema...
0/1 regions updated.
1/1 regions updated.
Done.
0 row(s) in 2.4670 seconds
hbase(main):055:0> alter 'scores','delete'=>'courese'
不过不能删除掉,先disable 'scores',修改完之后再enable 'scores'。
删除表
先禁用表
hbase(main):057:0> disable 'scores'
然后删除表
hbase(main):057:0> drop 'scores'
删除指定数据
delete 'scores','Mark','courese:english'
1
删除整行
deleteall '表名','行键'
deleteall 'scores','Mark'(慎用)
1
2
清空表
表结构仍然在。
truncate 'scores'