hbase伪分布式安装配置的问题.

HBase伪分布式安装及简单使用
HBase是Hadoop的,基于Hadoop运行,是一种NoSQL数据库。
特点:分布式、多版本、面向列的存储模型,能够大规模的数据实时随机读写,可直接使用本地文件。
不适合:与关系型数据库相比,模型简单,API很少;不适合小规模的数据。
数据存放的位置叫做单元(cell),其中的数据可以有多个版本,根据时间戳(timestamp)来区别。
tar xfz hbase-0.94.18.tar.gz
vi hbase-env.sh
export JAVA_HOME = /usr/jdk1.6.0_45
vi hbase-site.xml
&configuration&
&property&
&name&hbase.rootdir&/name&
&value&hdfs://localhost:9000/hbase&/value&
&description&数据存放的位置。&/description&
&/property&
&property&
&name&dfs.replication&/name&
&value&1&/value&
&description&指定副本个数为1,因为伪分布式。&/description&
&/property&
&/configuration&
以上配置完成后,启动hadoop,
cd ../hadoop
bin/start-all.sh
jps 检查是否启动成功。
然后启动hbase,
cd ../hbase*
bin/start-hbase.sh
jps检查hbase是否启动成功,
成功会有HMaster
也可通过,http://localhost:60010查看
bin/hbase shell 可进入hbase命令行工具。
HBase Shell 支持多种命令
? status, version
&数据定义语言(DDL)
? alter, create, describe, disable, drop, enable, exists, is_disabled,
is_enabled, list
&数据控制语言 (DML)
? count, delete, deleteall, get, get_counter, incr, put, scan, truncate
? balancer, close_region, compact, flush, major_compact, move, split,
unassign, zk_dump, add_peer,disable_peer, enable_peer,
remove_peer, start_replication, stop_replication
? 查看每个命令的使用方法
&hbase& help &&command&&
&list #列出hbase存在的表
&status #返回集群的状态信息
创建一张表,hbase有多种建表的方式:
--hbase& create 't1', {NAME =& 'f1', VERSIONS =& 5}
&hbase& create 't1', {NAME =& 'f1', VERSIONS =& 1,
TTL =& 2592000, BLOCKCACHE =& true}
&hbase& create 't1', {NAME =& 'f1'}, {NAME =& 'f2'},
{NAME =& 'f3'}
&hbase& create 't1', 'f1', 'f2', 'f3'
如,create 'blog', {NAME=&'info'}, {NAME=&'content'}
list查看hbase中的表
建好表之后,添加数据到表中
格式如下:
put 'table', 'row_id', 'family:column', 'value'
put 'Blog', 'Matt-001', 'info:title', 'Elephant'
put 'Blog', 'Matt-001', 'info:author', 'Matt'
put 'Blog', 'Matt-001', 'info:date', ''
count 'table_name' 查看列数
get 'table', 'row_id' 获取表中的某一列数据
scan 'table_name' 返回整张表的全部数据
scan 'table', {COLUMNS=&['col1', 'col2']} 也可以加条件
编辑数据:
用的还是put 命令,即put在列不存在的时候执行添加,存在的话就执行修改。
修改的时候会保留之前的版本,默认会保留3份。
delete 'table', 'rowId', 'column' 删除数据,不加条件会删除所有版本。
删除表,首先要将表的状态改成离线,disable 'table_name'
才能删除,drop 'table_name'
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'> JackieYeah的博客详情
摘要: HBase – Hadoop Database, 是一个高可靠性的、高性能的、可伸缩的、面向列存储的开源分布式存储系统。本文介绍了 HBase 单机模式和伪分布式模式的安装和配置
##前期准备
### 操作系统
Ubuntu 14.04.1 LTS (GNU/Linux 4.2.0-41-generic x86_64)
### 软件列表
| ------------- |:-------------:|
| 1.7.0_80 |
| ZooKeeper | 3.4.8
| HBase | 1.2.2
### 下载安装
可以从 [官方下载地址](http://www.apache.org/dyn/closer.cgi/hbase/) 下载 HBase 最新 stable 版本 hbase-1.2.2-bin.tar.gz.注意, 需要确保下载的 HBase 版本与 Hadoop 版本兼容([Hadoop兼容列表](http://hbase.apache.org/book.html#hadoop)).
关于 JDK、Hadoop 以及 ZooKeeper 的安装, 可以参考博客的相关文章, 下面简单说明一下 HBase 的安装.将下载的 hbase-1.2.2-bin.tar.gz 文件解压安装到 /opt 目录下:
sudo tar -zxvf hbase-1.2.2-bin.tar.gz #解压缩
sudo mv hbase-1.2.2 hbase #文件夹重命名
sudo chown -R hadoop:hadoop hbase #修改 hbase 目录所属的用户和用户组
####环境变量
编辑 /etc/profile
sudo vim /etc/profile
在文件末尾增加以下环境变量配置
# HBase Env
export HBASE_HOME=/opt/hbase
export PATH=$PATH:$HBASE_HOME/bin
使环境变量生效
source /etc/profile
验证是否安装成功
hadoop[@master](http://my.oschina.net/u/48054):~$ hbase version
HBase 1.2.2
Source code repository git://asf-dev/home/busbey/projects/hbase revision=3f671c1ead70d249ea4598f1bbcca13
Compiled by busbey on Fri Jul
1 08:28:55 CDT 2016
From source with checksum 7ac43c3d2f62f134b2a6aa1a05ad66ac
从上面输出的信息可以看出 HBase 已经安装成功, 接下来将分别进行 HBase 单机模式和集群模式的配置.
##单机模式
###conf/hbase-env.sh
编辑 _**hbase-env.sh**_ 配置文件:
export JAVA_HOME=/opt/java/jdk1.7.0_80/
#JDK安装目录
export HBASE_MANAGES_ZK=true #配置hbase自己管理zookeeper
###conf/hbase-site.xml
编辑 HBase 核心配置文件 _**hbase-site.xml**_, 指定本地文件系统上存储 HBase 和 ZooKeeper 数据的目录. 默认 HBase 数据会存储在 /tmp/hbase-${user.name} 目录下. 很多服务器在重启之后会删除 /tmp 目录, 所以应该将数据存储在其它目录下. 配置如下:
&configuration&
&property&
&name&hbase.rootdir&/name&
&value&file:///opt/hbase/data&/value&
&/property&
&property&
&name&hbase.zookeeper.property.dataDir&/name&
&value&/opt/hbase/data/zookeeper&/value&
&/property&
&/configuration&
hbase.rootdir 用于指定 HBase 数据存储目录, hbase.zookeeper.property.dataDir 用于指定 ZooKeeper 数据存储目录. 需要注意的是, HBase 数据存储目录不需要我们自己创建, HBase 会自动创建。如果你创建了这个目录, HBase 将会尝试做数据迁移.
###启动HBase
bin/start-hbase.sh 可以很方便的启动 HBase.
![start-hbase](https://static.oschina.net/uploads/img/2.png "start-hbase")
可以看到 HBase 已经成功启动, 使用 jps 命令可以看到启动了一个称为 HMaster 的进程. 在单机模式中, HBase 在这单个 JVM 中运行所有的守护进程, 比如 HMaster, 单个 HRegionServer, 以及 ZooKeeper 守护进程.
###HBase简单操作
####连接HBase
使用 "hbase shell" 命令可以连接到正在运行的 HBase 实例.
![hbase-shell](https://static.oschina.net/uploads/img/25056_JyYx.png "hbase-shell")
####查看HBase Shell中的帮助文档
在 HBase Shell 中输入 help 并按下回车键, 将会显示一些基本的使用信息以及命令示例. 需要注意的是: 表名, 行, 列都必须使用引号括起来.
hbase(main):008:0& help
HBase Shell, version 1.2.2, r3f671c1ead70d249ea4598f1bbcca13, Fri Jul
1 08:28:55 CDT 2016
Type 'help "COMMAND"', (e.g. 'help "get"' -- the quotes are necessary) for help on a specific command.
Commands are grouped. Type 'help "COMMAND_GROUP"', (e.g. 'help "general"') for help on a command group.
COMMAND GROUPS:
Group name: general
Commands: status, table_help, version, whoami
Group name: ddl
Commands: alter, alter_async, alter_status, create, describe, disable, disable_all, drop, drop_all, enable, enable_all, exists, get_table, is_disabled, is_enabled, list, locate_region, show_filters
Group name: namespace
Commands: alter_namespace, create_namespace, describe_namespace, drop_namespace, list_namespace, list_namespace_tables
Group name: dml
Commands: append, count, delete, deleteall, get, get_counter, get_splits, incr, put, scan, truncate, truncate_preserve
Group name: tools
Commands: assign, balance_switch, balancer, balancer_enabled, catalogjanitor_enabled, catalogjanitor_run, catalogjanitor_switch, close_region, compact, compact_rs, flush, major_compact, merge_region, move, normalize, normalizer_enabled, normalizer_switch, split, trace, unassign, wal_roll, zk_dump
Group name: replication
Commands: add_peer, append_peer_tableCFs, disable_peer, disable_table_replication, enable_peer, enable_table_replication, list_peers, list_replicated_tables, remove_peer, remove_peer_tableCFs, set_peer_tableCFs, show_peer_tableCFs
Group name: snapshots
Commands: clone_snapshot, delete_all_snapshot, delete_snapshot, list_snapshots, restore_snapshot, snapshot
Group name: configuration
Commands: update_all_config, update_config
Group name: quotas
Commands: list_quotas, set_quota
Group name: security
Commands: grant, list_security_capabilities, revoke, user_permission
Group name: procedures
Commands: abort_procedure, list_procedures
Group name: visibility labels
Commands: add_labels, clear_auths, get_auths, list_labels, set_auths, set_visibility
SHELL USAGE:
Quote all names in HBase Shell such as table and column names.
Commas delimit
command parameters.
Type &RETURN& after entering a command to run it.
Dictionaries of configuration used in the creation and alteration of tables are
Ruby Hashes. They look like this:
{'key1' =& 'value1', 'key2' =& 'value2', ...}
and are opened and closed with curley-braces.
Key/values are delimited by the
'=&' character combination.
Usually keys are predefined constants such as
NAME, VERSIONS, COMPRESSION, etc.
Constants do not need to be quoted.
'Object.constants' to see a (messy) list of all constants in the environment.
If you are using binary keys or values and need to enter them in the shell, use
double-quote'd hexadecimal representation. For example:
hbase& get 't1', "key\x03\x3f\xcd"
hbase& get 't1', "key\003\023\011"
hbase& put 't1', "test\xef\xff", 'f1:', "\x01\x33\x40"
The HBase shell is the (J)Ruby IRB with the above HBase-specific commands added.
For more on the HBase Shell, see http://hbase.apache.org/book.html
####创建表
使用 **_create_** 命令可以创建一个新表, 必须要指定表明和列族名.
hbase(main):001:0& create 'test', 'cf'
0 row(s) in 1.7990 seconds
=& Hbase::Table - test
####列出表的信息
可以使用 **_list_** 命令列出 test 表的信息
hbase(main):002:0& list 'test'
1 row(s) in 0.0530 seconds
=& ["test"]
####往表中插入数据
可以使用 **_put_** 命令往表中插入数据.
hbase(main):003:0& put 'test', 'row1', 'cf:a', 'value1'
0 row(s) in 0.9960 seconds
hbase(main):004:0& put 'test', 'row2', 'cf:b', 'value2'
0 row(s) in 0.0160 seconds
hbase(main):005:0& put 'test', 'row3', 'cf:c', 'value3'
0 row(s) in 0.0170 seconds
我们插入了三行数据, 第一行的row key 是 row1, 列是 cf:a, 其值是 value1.HBase 中的列是由列族前缀, 冒号以及列名后缀组成.
####一次扫描表中所有数据
可以使用 **_scan_** 命令一次扫描 HBase 表中的所有数据.
hbase(main):006:0& scan 'test'
COLUMN+CELL
column=cf:a, timestamp=4, value=value1
column=cf:b, timestamp=1, value=value2
column=cf:c, timestamp=1, value=value3
3 row(s) in 0.0770 seconds
####获取单行数据
可以使用 **_get_** 命令一次获取一行数据.
hbase(main):007:0& get 'test', 'row1'
timestamp=4, value=value1
1 row(s) in 0.0770 seconds
####禁用表
在某些情况下如果你想要删除表或是改变其设置, 需要先禁用表.可以使用 **_disable_** 命令禁用表, 稍后可以使用 **_enable_** 命令重新启用表.
hbase(main):008:0& disable 'test'
0 row(s) in 2.3740 seconds
hbase(main):009:0& enable 'test'
0 row(s) in 1.3380 seconds
####删除表
在测试了 **_enable_** 命令之后再次禁用表, 接着使用 **_drop_** 命令删除表:
hbase(main):010:0& disable 'test'
0 row(s) in 2.3220 seconds
hbase(main):011:0& drop 'test'
0 row(s) in 1.3210 seconds
可以再次使用 **_list_** 命令查看表是否已经被删除.
hbase(main):012:0& list
0 row(s) in 0.0310 seconds
####退出HBase Shell
使用 **_quit_** 命令 HBase Shell, 但是 HBase 实例仍然在后台运行.
###停止HBase
bin/start-hbase.sh 脚本可以很方便的启动所有 HBase 守护进程, 同样的, bin/stop-hbase.sh 脚本可以很方便的停止所有 HBase 守护进程.
$ stop-hbase.sh
stopping hbase....................
使用 _**jps**_ 命令来确保 HMaster 和 HRegionServer 进程都已经关闭.
hadoop[[[[[@master](http://my.oschina.net/u/48054)](http://my.oschina.net/u/48054)](http://my.oschina.net/u/48054)](http://my.oschina.net/u/48054)](http://my.oschina.net/u/48054):~$ jps
##伪分布式模式
###conf/hbase-site.xml
编辑 hbase-site.xml 配置文件.首先, 增加以下配置:
&property&
&name&hbase.cluster.distributed&/name&
&value&true&/value&
&/property&
将 _**hbase.cluster.distributed**_ 属性值设置为 true, 指定 HBase 运行于分布式模式, 即一个 JVM 运行一个守护进程.
接着, 将 _**hbase.rootdir**_ 属性值由本地文件系统路径改成 HDFS 实例的地址, 使用 _**hdfs:////**_ 这种 URI 语法。在本例中, HDFS运行于本机的 9000 端口.
&property&
&name&hbase.rootdir&/name&
&value&hdfs://master:9000/hbase&/value&
&/property&
注意: 不需要在 HDFS 中创建这个目录。HBase 会自动帮我们创建.如果你创建了这个目录, HBase 将会尝试做数据迁移.
###启动HBase
####启动HDFS
在启动 HBase 之前, 先使用 start-dfs.sh 启动 HDFS.
![start-dfs](https://static.oschina.net/uploads/img/03514_OyhH.png "start-dfs")
####启动HBase
使用 start-hbase.sh 启动 HBase.
![start-hbase-pd](https://static.oschina.net/uploads/img/03832_21cX.png "start-hbase-pd")
使用 jps 命令可以看到 HMaster, HRegionServer 以及 HQuorumPeer 进程正在运行.
###在HDFS中检查HBase目录
如果一切正常, HBase 将在 HDFS 中创建配置文件中指定的目录 /hbase/. 可以使用 _**hdfs dfs**_ 命令列出这个目录.
![hdfs-hbase](https://static.oschina.net/uploads/img/04736_qokp.png "hdfs-hbase")
###HBase Shell
####创建表
hbase(main):006:0& create 'test', 'cf'
0 row(s) in 1.4440 seconds
=& Hbase::Table - test
hbase(main):007:0& list
1 row(s) in 0.0170 seconds
=& ["test"]
####查看HDFS路径
hadoop[[[[[@master](http://my.oschina.net/u/48054)](http://my.oschina.net/u/48054)](http://my.oschina.net/u/48054)](http://my.oschina.net/u/48054)](http://my.oschina.net/u/48054):~$ hdfs dfs -ls /hbase/data/default
Found 1 items
drwxr-xr-x
- hadoop supergroup
21:00 /hbase/data/default/test
**/hbase/data/default/test** 文件夹即为 test 表在 HDFS 上的存储路径.
##参考资料
[http://hbase.apache.org/book.html#quickstart](http://hbase.apache.org/book.html#quickstart)
人打赏支持
码字总数 88902
支付宝支付
微信扫码支付
打赏金额: ¥
已支付成功
打赏金额: ¥
& 开源中国(OSChina.NET) |
开源中国社区(OSChina.net)是工信部
指定的官方社区Hadoop安装教程_单机/伪分布式配置
Hadoop安装教程_单机/伪分布式配置
环境:Ubunut 14.04 64位
Hadoop版本:Hadoop 2.6.0
创建Hadoop用户
如果你安装 Ubuntu 的时候不是用的 &hadoop& 用户,那么需要增加一个名为 hadoop 的用户。
sudo useradd -m hadoop -s /bin/bash
这条命令创建了可以登陆的 hadoop 用户,并使用 /bin/bash 作为 shell。
接着使用如下命令设置密码,可简单设置为 hadoop,按提示输入两次密码:
sudo passwd hadoop
可为 hadoop 用户增加管理员权限,方便部署,避免一些对新手来说比较棘手的权限问题:
sudo adduser hadoop sudo
最后注销当前用户(点击屏幕右上角的齿轮,选择注销),使用刚创建的 hadoop 用户进行登陆。
配置SSH无密码登录
可以通过以下命令登录本机
ssh localhost
按照提示输入yes,然后输入密码,这样登录每次都要输入密码,我们配置成无密码登录比较方便,首退出刚才的ssh,输入以下命令,就可以无密码登录了
exit # 退出刚才的 ssh localhost
cd ~/.ssh/ # 若没有该目录,ssh localhost
ssh-keygen -t rsa # 会有提示,都按回车就可以
cat ./id_rsa.pub && ./authorized_keys # 加入授权
安装JAVA环境
环境可选择
的 JDK,或是 OpenJDK,新版本在 OpenJDK 1.7 下是没问题的。为图方便,这边直接通过命令安装 OpenJDK 7。
sudo apt-get install openjdk-7-jre openjdk-7-jdk
安装好openJDK之后我们可以通过以下命令来的到安装路径,用于后面JAVA_HOME环境变量的配置。
dpkg -L openjdk-7-jdk | grep '/bin/javac'
安装Hadoop 2
Hadoop 2 可以通过 http://mirror./apache/hadoop/common/ 或者 /apache/hadoop/common/ 下载,一般选择下载最新的稳定版本,即下载 &stable& 下的 hadoop-2.x.y.tar.gz 这个格式的文件,这是编译好的,另一个包含 src 的则是 Hadoop 源代码,需要进行编译才可使用。
下载时强烈建议也下载 hadoop-2.x.y.tar.gz.mds 这个文件,该文件包含了检验值可用于检查 hadoop-2.x.y.tar.gz 的完整性,否则若文件发生了损坏或下载不完整,Hadoop 将无法正常运行。
本文涉及的文件均通过下载,默认保存在 &下载& 目录中(若不是请自行更改 tar 命令的相应目录)。另外,本教程选择的是 2.6.0 版本,如果你用的不是 2.6.0 版本,则将所有命令中出现的 2.6.0 更改为你所使用的版本。
cat ~/Downloads/hadoop-2.6.0.tar.gz.mds | grep 'MD5' # 列出md5检验值
# head -n 6 ~/Downloads/hadoop-2.7.1.tar.gz.mds # 2.7.1版本格式变了,可以用这种方式输出
md5sum ~/Downloads/hadoop-2.6.0.tar.gz | tr &a-z& &A-Z& # 计算md5值,并转化为大写,方便比较
若文件不完整则这两个值一般差别很大,可以简单对比下前几个字符跟后几个字符是否相等即可,如下图所示,如果两个值不一样,请务必重新下载。
我们选择将 Hadoop 安装至 /usr/local/ 中:
sudo tar -zxf ~/下载/hadoop-2.6.0.tar.gz -C /usr/local # 解压到/usr/local中
cd /usr/local/
sudo mv ./hadoop-2.6.0/ ./hadoop # 将文件夹名改为hadoop
sudo chown -R hadoop ./hadoop # 修改文件权限
Hadoop 解压后即可使用。输入如下命令来检查 Hadoop 是否可用,成功则会显示 Hadoop 版本信息:
cd /usr/local/hadoop
./bin/hadoop version
Hadoop单机配置(非分布式)
Hadoop 默认模式为非分布式模式,无需进行其他配置即可运行。非分布式即单 Java 进程,方便进行调试。
现在我们可以执行例子来感受下 Hadoop 的运行。Hadoop 附带了丰富的例子(运行 ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar 可以看到所有例子),包括 wordcount、terasort、join、grep 等。
在此我们选择运行 grep 例子,我们将 input 文件夹中的所有文件作为输入,筛选当中符合正则表达式 dfs[a-z.]+ 的单词并统计出现的次数,最后输出结果到 output 文件夹中。
cd /usr/local/hadoop
mkdir ./input
cp ./etc/hadoop/*.xml ./input # 将配置文件作为输入文件
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep ./input ./output 'dfs[a-z.]+'
cat ./output/* # 查看运行结果
如果运行成功结果应该是
1 dfsadmin
注意,Hadoop 默认不会覆盖结果文件,因此再次运行上面实例会提示出错,需要先将 ./output 删除。
Hadoop伪分布式配置
Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode,同时,读取的是 HDFS 中的文件。
Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中,伪分布式需要修改2个配置文件 core-site.xml 和 hdfs-site.xml 。Hadoop的配置文件是 xml 格式,每个配置以声明 property 的 name 和 value 的方式来实现。
修改配置文件 core-site.xml ,将当中的
修改为下面的配置
hadoop.tmp.dir
file:/usr/local/hadoop/tmp
Abase for other temporary directories.
fs.defaultFS
hdfs://localhost:9000
同样修改配置文件hdfs-site.xml
dfs.replication
dfs.namenode.name.dir
file:/usr/local/hadoop/tmp/dfs/name
dfs.datanode.data.dir
file:/usr/local/hadoop/tmp/dfs/data
修改/usr/local/hadoop/etc/hadoop/hadoop-env.sh文件中JAVA_HOME环境变量
vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh
将其中的JAVA_HOME改成openJDK的目录。改后结果如图
Hadoop配置文件说明
Hadoop 的运行方式是由配置文件决定的(运行 Hadoop 时会读取配置文件),因此如果需要从伪分布式模式切换回非分布式模式,需要删除 core-site.xml 中的配置项。
此外,伪分布式虽然只需要配置 fs.defaultFS 和 dfs.replication 就可以运行(官方教程如此),不过若没有配置 hadoop.tmp.dir 参数,则默认使用的临时目录为 /tmp/hadoo-hadoop,而这个目录在重启时有可能被系统清理掉,导致必须重新执行 format 才行。所以我们进行了设置,同时也指定 dfs.namenode.name.dir 和 dfs.datanode.data.dir,否则在接下来的步骤中可能会出错。
配置完成后,执行NameNode的格式化:
./bin/hdfs namenode -format
成功的话会看到successfully formatted和Exitting with status 0的提示,若为 &Exitting with status 1& 则是出错
接着开启 NameNode 和 DataNode 守护进程。
./sbin/start-dfs.sh
启动过程总可能会出现以下警告
hadoop@ubuntu:/usr/local$ ./hadoop/sbin/start-dfs.sh
j16/06/06 19:18:06 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Starting namenodes on [localhost]
在StackOverFlow上找到原因是因为Hadoop library $HADOOP_HOME/lib/native/libhadoop.so.1.0.0 was actually compiled on 32 bit.需要重新下载在64bit的上重新编译
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'1323人阅读
linux(10)
hadoop的伪分布式模式配置与安装
上次对hadoop单机模式中已经介绍了hadoop的基本安装,本次将讲解hadoop的伪分布式模式进行对hadoop的基本模拟部署。
安装软件:
&&&&&&&& 系统:Linux 2.6.32-358.el6.x86_64
&&&&&&&& JDK:jdk-7u7-linux-i586.tar.gz
&&&&&&&& Hadoop版本:hadoop-0.20.2-cdh3u4.tar.gz
硬件环境:
&&&&&&&& 三台主机:分别为
gdy192&&&&&&&&&&&& 192.168.61.192
gdy194&&&&&&&&&&&& 192.168.61.194
gdy195&&&&&&&&&&&& 192.168.61.195
本次部署模型为:
gdy192上部署:NameNode和JobTracker
gdy194上部署:SecondaryNameNode
gdy195上部署:DateNode TaskTracker
首先配置三台主机的hosts文件,以便之后不用ip而直接用别名进行相互访问
首先在gdy192上配置一份信息。
[root@gdy192 /]#vim /etc/hosts
wq保存退出
将已经配置好的文件分别拷贝一份到其他两台主机上
拷贝文件到gdy194上
[root@gdy192 ~]#scp /etc/hosts root@gdy194:/etc/
输入gdy194的root密码
拷贝成功。
去gdy194上查看/etc/hosts验证是否是叫我们刚才修改的文件
[root@gdy194 /]#cat /etc/hosts
可以看到拷贝成功。
同样再次拷贝一份到gdy195
在gdy192上输入:
[root@gdy192 ~]#scp /etc/hosts root@gdy195:/etc/
这里就不验证了。
在gdy192上创建jDK和Hadoop的安装目录gd
[root@gdy192 /]#mkdir /usr/gd/ -pv
在gdy194上创建JDK和Hadoop的安装目录gd
在gdy195上创建JDK和Hadoop的安装目录gd
分别在gdy192,gdy194,gdy195上创建hduser用户并设置密码
在gdy192上
[root@gdy192 /]#useradd hduser
[root@gdy192 /]#passwd hduser
在gdy194上
[root@gdy194 /]#useradd hduser
[root@gdy194 /]#passwd hduser
在gdy195上
[root@gdy195 /]#useradd hduser
[root@gdy195 /]#passwd hduser
将之前准备好的软件包拷贝到gdy192上,
如下图是我已经拷贝好的文件
将这两个文件解压到之前创建的目录/usr/gd/下面
[root@gdy192ftpftp]# tar -xf jdk-7u7-linux-i586.tar.gz -C /usr/gd/
[root@gdy192ftpftp]# tar -xf hadoop-0.20.2-cdh3u4.tar.gz -C /usr/gd/
使用ls /usr/gd/可以查看解压后的文件
为jdk和hadoop创建软链接在/usr/gd目录下面
[root@gdy192ftpftp]# ln -s /usr/gd/jdk1.7.0_07/ /usr/gd/java
[root@gdy192ftpftp]# ln -s /usr/gd/hadoop-0.20.2-cdh3u4/ /usr/gd/hadoop
[root@gdy192ftpftp]# ll /usr/gd/
配置java和hadoop的环境变量
配置java的环境变量
[root@gdy192 /]#vim /etc/profile.d/java.sh
添加如下信息:
JAVA_HOME=/usr/gd/java
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOMEPATH
wq保存退出
配置hadoop的环境变量
[root@gdy192 /]#vim /etc/profile.d/hadoop.sh
添加如下信息:
HADOOP_HOME=/usr/gd/hadoop
PATH=$HADOOP_HOME/bin:$PATH
export HADOOP_HOMEPATH
wq保存退出
使用scp分别将这两个文件拷贝到gdy194和gdy195机器上的/etc/profile.d/目录下面。
拷贝到gdy194上
[root@gdy192 /]#scp /etc/profile.d/java.sh root@gdy194:/etc/profile.d/
[root@gdy192 /]#scp /etc/profile.d/hadoop.sh root@gdy194:/etc/profile.d/
拷贝到gdy195上
[root@gdy192 /]#scp /etc/profile.d/java.sh root@gdy195:/etc/profile.d/
[root@gdy192 /]#scp /etc/profile.d/hadoop.sh root@gdy195:/etc/profile.d/
修改/usr/gd/目录下的所有文件的属主和属组为hduser
[root@gdy192 /]#chown -R hduser.hduser /usr/gd
在gdy192上切换到hduser用户下面
[root@gdy192 /]#su – hduser
使用ssh-keygen和ssh-copy-id为gdy192能无密码直接访问gdy194和gdy195下的hduser用户
先制作秘钥文件
[hduser@gdy192 ~]$ssh-keygen -t rsa -P ''
使用ssh-copy-id拷贝生成的公秘到gdy194机器上的hduser下,使gdy192能无密码访问gdy194
[hduser@gdy192 ~]$ssh-copy-id -i .ssh/id_rsa.pub hduser@gdy194
输入gdy194上的hduser的用户密码
使用ssh-copy-id拷贝生成的公秘到gdy195机器上的hduser下,使gdy192能无密码访问gdy195
[hduser@gdy192 ~]$ssh-copy-id -i .ssh/id_rsa.pub hduser@gdy195
使用ssh-copy-id拷贝生成的公秘到gdy192机器上的hduser下,使gdy192能无密码访问gdy192
注意:即使是hadoop中使用的是ip进行调度访问,即使是访问自己的机器,如果不配置无密码访问,访问时,一样需要输入密码。这里和之前配置hadoop单机模式时一样。需要配置无密码访问。
[hduser@gdy192 ~]$ssh-copy-id -i .ssh/id_rsa.pub hduser@gdy192
验证gdy192是否已经不用输密码自己访问gdy194
[hduser@gdy192 ~]$ssh gdy194 'date'
能不需要输入密码就显示gdy194上的日期,则证明配置成功。
验证gdy192是否已经不用输密码自己访问gdy195
[hduser@gdy192 ~]$ssh gdy195 'date'
验证gdy192是否已经不用输入访问自己gdy192
[hduser@gdy192 ~]$ssh gdy192 'date'
查看三台机器上的系统世界是否一样
[hduser@gdy192 ~]$ssh gdy194 'date';ssh gdy195 'date';ssh gdy192 'date'
同步三个节点上的时间:
注意:这里由于hadoop没有权限修改时间,需要配置root能无密码访问gdy194和gdy195,gdy192。然后在统一设定时间。或者你自己设计其他方法保证时间同步。不过,时间同步在正在部署的环境上是必须要有的。如果这步你不配置,对于本次的hadoop伪分布式模式也没有多大影响。不过建议还是配置下。
配置代码如下。
[hduser@gdy192 ~]$exit
先退出hduser用户
[root@gdy192 /]#cd ~
进入root用户的家目录
制作秘钥文件
[root@gdy192 ~]#ssh-keygen -t rsa -P ''
拷贝秘钥文件到gdy194,gdy195
&[root@gdy192 ~]# ssh-copy-id -i.ssh/id_rsa.pub root@gdy194
[root@gdy192 ~]#ssh-copy-id -i .ssh/id_rsa.pub root@gdy195
由于root自己访问自己,每次都需要确认一次yes,所以用root用户配置无密码访问自己没有用。再说这里的配置只是为了完成三台电脑的时间同步。
先检查三台电脑的时间:
[root@gdy192 ~]#ssh gdy194 'date';ssh gdy195 'date';date
将三台电脑的时间设为同一时间:
[root@gdy192 ~]#ssh gdy194 'date ';ssh gdy195 'date ';date
再次查看时间
[root@gdy192 ~]#ssh gdy194 'date';ssh gdy195 'date';date
可以看到这里的时间就已经同步了。
用gdy192切换到hduser用户下
[root@gdy192 ~]#su - hduser
再来查看三台电脑的时间:
[hduser@gdy192 ~]$ssh gdy194 'date';ssh gdy195 'date';ssh gdy192 date
接下来就要开始配置hadoop的配置文件了
进程hadoop的文件目录里面
[hduser@gdy192hadoop]$ cd /usr/gd/hadoop/conf/
由于在hadoop单机模式配置里面已经对重要文件做个解释。这里不再重复解释,详情请见日志《hadoop的单机模式配置与安装》
编辑masters文件
[hduser@gdy192conf]$ vim masters
将原来的localhost修改为gdy194
wq保存退出
注意:在上面就已经说明gdy194是用来做SecondaryNameNode的名称节点的。
而masters就是配置第二名称节点的。
编辑slaves文件
[hduser@gdy192conf]$ vim slaves
将原来的localhost修改为gdy195
wq保存退出
同样这里定义的是数据节点。
编辑文件core-site.xml
[hduser@gdy192conf]$ vim core-site.xml
在&configuration&&/configuration&直接添加如下信息
&&property&
&&&&&&name&hadoop.tmp.dir&/name&
&&&&&&value&/hadoop/temp&/value&
&&/property&
&&property&
&&&&&&name&fs.default.name&/name&
&&&&&&value&hdfs://gdy192:8020&/value&
&&/property&
wq保存退出
注意:这里的fs.default.name定义的是主节点。由于每个节点上配置文件都一样,所以这里要使用ip或者别名来定义主节点的位置。
由于这里定义了一个hadoop的缓存文件目录,所以我们需要在三台电脑上分别创建这个缓存文件目录。
切换到root用户。
[hduser@gdy192conf]$ su – root
创建/hadoop目录
[root@gdy192 ~]#mkdir /hadoop/
修改hadoop目录的属主和属主为hduser,让hduser能在这个目录下有写权限。
[root@gdy192 ~]#chown -R hduser.hduser /hadoop
同样在gdy194和gdy195上创建一个这样的目录,并赋予hadoop权限。
在gdy194上
[root@gdy194 /]#mkdir /hadoop
[root@gdy194 /]#chown -R hduser.hduser /hadoop
在gdy195上
[root@gdy195 /]#mkdir hadoop
[root@gdy195 /]#chown -R hduser.hduser /hadoop
使用gdy192
退出当前用户,返回之前的hduser用户
[root@gdy192 ~]#exit
注意:这里由于刚刚是直接登录,所以现在能退出返回到之前的hduser用户和hduser操作的目录下面。
编辑文件 mapred-site.xml
[root@gdy192conf]# vim mapred-site.xml
在&configuration&和&/configuration&之间添加如下信息。
& &property&
&&&&&&name&mapred.job.tracker&/name&
&&&&& &value&gdy192:8021&/value&
& &/property&
wq保存退出
同样,由于这里定义的是JobTracker,而我们上部署就已经说明gdy192上存放jobTracker
所以这里在单机模式下的localhost就要改成ip或者是ip别名。
编辑文件:hdfs-site.xml
[root@gdy192conf]# vim hdfs-site.xml
在&configuration&和&/configuration&之间添加如下信息。
&property&
&&&&&&&&&&&&&&& &name&dfs.replication&/name&
&&&&&&&&&&&&&&& &value&1&/value&
&&&&&&&&&&&&&&& &description&The actualnumber of replications can be specified when the file iscreated.&/description&
&&&&&&& &/property&
&&&&&&& &property&
&&&&&&&&&&&&&&&&name&dfs.data.dir&/name&
&&&&&&&&&&&&&&&&value&/hadoop/data&/value&
&&&&&&&&&&&&&&& &final&ture&/final&
&&&&&&&&&&&&&&& &description&Thedirectories where the datanode stores blocks.&/description&
&&&&&&& &/property&
&&&&&&& &property&
&&&&&&&&&&&&&&&&name&dfs.name.dir&/name&
&&&&&&&&&&&&&&&&value&/hadoop/name&/value&
&&&&&&&&&&&&&&& &final&ture&/final&
&&&&&&&&&&&&&&& &description&Thedirectories where the namenode stores its persistentmatadata.&/description&
&&&&&&& &/property&
&&&&&&& &property&
&&&&&&&&&&&&&&& &name&fs.checkpoint.dir&/name&
&&&&&&&&&&&&&&&&value&/hadoop/namesecondary&/value&
&&&&&&&&&&&&&&& &final&ture&/final&
&&&&&&&&&&&&&&& &description&Thedirectories where the secondarynamenode stores checkpoints.&/description&
&&&&&&& &/property&
wq保存退出
注意:这里是跟想象的定义了hadoop中其他目录的位置,如果这里不定义,将会默认使用core-site.xml文件里面定义的默认缓存目录。
到这里hadoop的配置文件就已经配置完成了。
接下来分别在gdy194上和gdy195上解压jdk-7u7-linux-i586.tar.gz和hadoop-0.20.2-cdh3u4.tar.gz软件包到/etc/gd/文件夹下面。并分别创建连接文件。(向上面之前操作一样)
这由于重复操作。不再做解释。
接下来拷贝刚刚在gdy192上已经配置好的文件到gdy194和gdy195的对应位置。
方法如下:
在gdy192上使用root用户
拷贝文件到gdy194和gdy195上
[hduser@gdy192hadoop]$ scp /usr/gd/hadoop/conf/* gdy194:/usr/gd/hadoop/conf/
&[hduser@gdy192 hadoop]$ scp /usr/gd/hadoop/conf/*gdy195:/usr/gd/hadoop/conf/
在gdy194和gdy195上分别使用root用户给予/usr/gd/hadoop文件夹赋予hduser用户权限。
在gdy194上
[root@gdy194 /]#chown hduser.hduser /usr/gd/ -R
[root@gdy194 /]#ll /usr/gd/
在gdy195上
[root@gdy195 /]#chown hduser.hduser /usr/gd/ -R
[root@gdy195 /]#ll /usr/gd/
到这里hadoop的伪分布式模式已经全部配置完成。
启动hadoop伪分布式模式
使用gdy192主机。重新登录root用户
切换到hduser用户
格式化hadoop的文件系统HDFS
[hduser@gdy192 ~]$hadoop namenode -format
启动hadoop
[hduser@gdy192 ~]$start-all.sh
这里已经看到gdy192上成功启动了NameNode和JobTracker两个节点
查看gdy194上是否已经成功启动SecondaryNameNode
[hduser@gdy192 ~]$ssh gdy194 'jps'
看到已经成功启动
查看gdy195上是否已经成功启动DataNode和TaskTracker
[hduser@gdy192 ~]$ssh gdy195 'jps'
到这里已经看到都成功启动
[hduser@gdy192 ~]$netstat –nlpt
可以查看hadoop的端口
其中50030端口为hadoop的对外web网址端口。可以查看hadoop的MapReduce作业的相关信息
50070为hadoop的Namenode节点信息。
查看hadoop的MapReduce作业信息
可以在浏览器上访问:
查看hadoop的NameNode节点信息
可以在浏览器上访问:
由于SecondaryNameNode部署在gdy194上。
查看gdy194上的Hadoop的进程端口信息。
[hduser@gdy192 ~]$ssh gdy194 'netstat -nlpt'
其中50090端口为hadoop的SecondaryNameNode的web对外端口
可以使用:
来访问SecondaryNameNode的对外web端口。
同样,由于DataNode和TaskTracker部署在gdy195上。
在gdy192上查看gdy195上的端口信息
[hduser@gdy192 ~]$ssh gdy195 'netstat -nlpt'
50060为hadoop的TaskTracker的节点信息
50075为hadoop的DateNoe的节点信息
分别通过以下地址可访问:
http://192.168.61.195:50060/tasktracker.jsp
注意:在实际部署中以上web的访问端口前的ip地址为你实际部署的ip地址,这里我是按照我自己部署的ip地址列举出来的。
在hadoop上做一次hadoop的单词统计
使用机器gdy192
在hadoop的DNSF文件系统上新建一个text文件夹
查看已经建立好的文件夹
[hduser@gdy192 ~]$hadoop fs -ls /
上传一个系统文件到test文件夹下
[hduser@gdy192 ~]$hadoop fs -put /etc/hosts /test
查看已经上传的文件
[hduser@gdy192 ~]$hadoop fs -ls /test
对hadoop目录中的test所有文件做单词统计,统计结果输出在word文件夹下
[hduser@gdy192 ~]$hadoop jar /usr/gd/hadoop/hadoop-examples-0.20.2-cdh3u4.jar wordcount /test /word
在这个过程中可以通过
来查看作业进行的情况。
下图就是刚刚执行的作业完成后的显示
查看单词统计结果输出目录
[hduser@gdy192 ~]$hadoop fs -ls /word
查看结果输出文件part-r-00000可以看到刚才对test目录下的文件做单词统计的统计结果
[hduser@gdy192 ~]$hadoop fs -cat /word/part-r-00000
这就是刚才统计的的统计结果。
到本文档位置hadoop的单机模式和hadoop的伪分布模式安装和部署就已经完成了。
其实hadoop的单独安装后一般都会再安装hbase来原理hadoop。这样好方便存储数据,和管理。对于在hadoop的单机模式上怎么部署hbase和在hadoop的伪分布式模式下如何部署hbase。将在之后陆续公布。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:36445次
积分:1707
积分:1707
排名:第18569名
原创:142篇
(1)(1)(141)

我要回帖

更多关于 hbase1.2伪分布式安装 的文章

 

随机推荐