Hadoop2.2.0 + HBase0.96.1.1部署实践
来源:互联网 发布:淘宝客服主管考核表 编辑:程序博客网 时间:2024/04/28 20:55
Hadoop2.2.0部署文档
一、准备工作:
1.机器准备:
IPuser/passwdhostnamerole
*172.16.16.31(萧何) lscm/izenexxxx B5M-0169 nn/snn/rm
*172.16.16.29(大哥) lscm/izenexxxx oscarshan-OptiPlex-990 dn/nm
*172.16.16.30(张清) lscm/izenexxxx Caliph dn/nm
*172.16.16.47(慕容) lscm/izenexxxx B5M-0213 dn/nm
nn:NameNode;
snn:SecondaryNameNode;
rm:ResourceManager;
dn:DataNode;
nm:NodeManager;
Hostname可以在/etc/hostname文件中修改;我这是借用别人的工作电脑,怕影响别人,就没改;真正部署的时候为了至少“看着舒服”,可以改成自己喜欢的名字如Cloud1,Cloud2,Cloud3之类;
创建用户:根据现有情况,172.16.16.31和172.16.16.47上已经有lscm帐号并且密码相同并且拥有管理员权限,使用之;对172.16.16.29和172.16.16.30,新建lscm帐号并设置相同密码并分配管理员权限;PS:useradd命令创建的用户没有home目录,不要使用;要使用adduser命令来创建用户;
分配权限:编辑/etc/sudoers文件,命令sudovi /etc/sudoers,在文件中增加lscmALL=(ALL:ALL) ALL一行;
修改绑定:编辑/etc/hosts文件,增加下面4行:
172.16.16.31B5M-0169
172.16.16.29oscarshan-OptiPlex-990
172.16.16.30Caliph
172.16.16.47B5M-0213
打通免登陆:设置4台机器之间相互免登,方法如下:
1).安装ssh工具:命令sudoapt-get install openssh-server,sudoapt-get install ssh
2).依次执行如下两条命令,
ssh-keygen-t dsa -P '' -f ~/.ssh/id_dsa
cat~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
3).将4台机器上~/.ssh/authorized_keys文件内容合并成一份,再分别放在原文件中;
4).修改/etc/ssh/ssh_config文件,末尾加上两行:
StrictHostKeyCheckingno
UserKnownHostsFile/dev/null
5).这样,4台机器便可以互相免登陆了
2.JDK的安装:略;
二、安装和配置Hadoop2.2.0:
1.下载:
访问http://hadoop.apache.org/—>左边的Releases—>右边的Download—>Downloada release now!—>“suggestedmirror”—>stable/—>hadoop-2.2.0.tar.gz,下载安装包;源码也在同一路径下,可以一同下载下来学习研究;
2.安装:
将下载的hadoop-2.2.0.tar.gz解压在~/hadoop220下,于是HADOOP_HOME就像这样:~/hadoop220/hadoop-2.2.0
新建三个目录,用来存放将来的数据:
~/hadoop220/dfs/name
~/hadoop220/dfs/data
~/hadoop220/temp
3.配置:
总共涉及到7个配置文件要改:
~/hadoop220/hadoop-2.2.0/etc/hadoop/hadoop-env.sh
~/hadoop220/hadoop-2.2.0/etc/hadoop/yarn-env.sh
~/hadoop220/hadoop-2.2.0/etc/hadoop/slaves
~/hadoop220/hadoop-2.2.0/etc/hadoop/core-site.xml
~/hadoop220/hadoop-2.2.0/etc/hadoop/hdfs-site.xml
~/hadoop220/hadoop-2.2.0/etc/hadoop/mapred-site.xml
~/hadoop220/hadoop-2.2.0/etc/hadoop/yarn-site.xml
PS:有些.xml文件不存在,可以从.template文件复制得来;
1).配置文件hadoop-env.sh
修改JAVA_HOME值(exportJAVA_HOME=exportJAVA_HOME=/home/lscm/installedprogrames/jdk1630/jdk1.6.0_30)
2).配置文件yarn-env.sh
修改JAVA_HOME值(exportJAVA_HOME=exportJAVA_HOME=/home/lscm/installedprogrames/jdk1630/jdk1.6.0_30)
3).配置文件slaves
写入以下内容:
oscarshan-OptiPlex-990
Caliph
B5M-02133
4).配置文件core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://B5M-0169:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/lscm/tmp</value>
<description>Abasefor other temporary directories.</description>
</property>
<property>
<name>hadoop.proxyuser.lscm.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.lscm.groups</name>
<value>*</value>
</property>
</configuration>
5).配置文件hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>B5M-0169:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/lscm/hadoop220/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/lscm/hadoop220/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.datanode.max.xcievers</name>
<value>4096</value>
</property>
</configuration>
6).配置文件mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>B5M-0169:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>B5M-0169:19888</value>
</property>
</configuration>
7).配置文件yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>B5M-0169:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>B5M-0169:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>B5M-0169:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>B5M-0169:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>B5M-0169:8088</value>
</property>
</configuration>
将上述7个配置文件复制到所有其他节点对应路径下;PS:这里有一个值得注意的地方,如果所有机器环境路径都一样,上面的7个文件就会完全相同,便可以配置一次然后完全复制;如果机器环境不一样,比如JAVA_HOME不一样,就得分别配置每台机器上的hadoop-env.sh和yarn-env.sh文件;
三、启动和使用:
进入HADOOP_HOME目录:cd~/hadoop220/hadoop-2.2.0/
1).格式化namenode:./bin/hdfsnamenode –format
2).启动hdfs:./sbin/start-dfs.sh
启动成功之后,在B5M-0169上面运行的进程有:NameNodeSecondaryNameNode;在oscarshan-OptiPlex-990和Caliph和B5M-0213上面运行的进程有:DataNode;
3).启动yarn:./sbin/start-yarn.sh
此时,在B5M-0169上面运行的进程有:NameNodeSecondaryNameNode ResourceManager;在oscarshan-OptiPlex-990和Caliph和B5M-0213上面运行的进程有:DataNodeNodeManager;
查看集群状态:./bin/hdfsdfsadmin –report
查看HDFS:http://172.16.16.31:50070
查看RM:http://172.16.16.31:8088
附:hdfs常用命令:
./hadoopfs -ls
./hadoopfs -ls input
./hadoopfs -lsr input
./hadoopfs -mkdir input/data
./hadoopfs -puttest.txt input/data
./hadoopfs -cat input/data/test.txt
./hadoopfs -getinput/data/test.txt ./
./hadoopfs -tailinput/data/test.txt
./hadoopfs -rminput/data/test.txt
./hadoopfs -help ls
HBase0.96.1.1部署文档:
一、准备工作:同Hadoop2.2.0部分;
二、安装和配置HBase0.96.1.1:
1.下载:
访问http://hbase.apache.org—>左边Downloads—>“suggestedmirror”—>hbase-0.96.1.1—>hbase-0.96.1.1-hadoop2-bin.tar.gz,下载安装包,源码在同一个包中;
2.安装
将下载的hbase-0.96.1.1-hadoop2-bin.tar.gz解压在~/hbase09611路径下,HBASE_HOME便像这样:~/hbase09611/hbase-0.96.1.1-hadoop2
3.配置
一个HadoopHDFS Datanode 有一个同时处理文件的上限.在配置Hbase之前,先确认下Hadoop的这个文件etc/hadoop/hdfs-site.xml里面的xceivers参数,至少要有4096:
<property>
<name>dfs.datanode.max.xcievers</name>
<value>4096</value>
</property>
然后重启Hadoop的HDFS系统;
需要修改的HBase的配置文件总共涉及到3个:
~/hbase09611/hbase-0.96.1.1-hadoop2/conf/hbase-env.sh
~/hbase09611/hbase-0.96.1.1-hadoop2/conf/hbase-site.xml
~/hbase09611/hbase-0.96.1.1-hadoop2/conf/regionservers
1).配置文件hbase-env.sh:
exportJAVA_HOME=/home/lscm/jdk1630/jdk1.6.0_30
exportHBASE_MANAGES_ZK=true
(这个目的是让HBase
托管ZooKeeper
)
2).
配置文件hbase-site.xml
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://B5M-0169:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2222</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>oscarshan-OptiPlex-990,Caliph,B5M-0213</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/lscm/hbase09611/zookeeper</value>
</property>
</configuration>
3).
配置文件regionservers
B5M-0169
oscarshan-OptiPlex-990
Caliph
B5M-0213
三、启动和使用:
首先确认
HDFS
系统
是运行着的,如果还没运行就到~/hadoop220/hadoop-2.2.0/sbin/
下启动./start-dfs.sh
1).
启动HBase
:
在~/hbase09611/hbase-0.96.1.1-hadoop2/bin
路径下执行./start-hbase.sh
脚本;
此时,
在
B5M-0169
上面运行的进程有:HMaster
;
在oscarshan-OptiPlex-990
和
Caliph
和B5M-0213
上面运行的进程有:HRegionServer
和HQuorumPeer
;
访问资源页:
http://172.16.16.31:60010
可以看到HBase
各项参数和属性
也可以到
~/hbase09611/hbase-0.96.1.1-hadoop2/bin
路径下执行./hbaseshell
,进入HBase
的命令行交互界面;
附:HBase
常用命令:
create'test2', 'cf'
list
list'test2'
put'test2', 'row1', 'cf:a', 'value1'
scan'test2'
disable'test2'
drop'test2'
附:最基本的用java
操作数据库代码:
public
class
Demo {
@SuppressWarnings("deprecation")
publicstaticvoidmain(String args[]) {
try{
//获得Hbase配置参数
Configurationconfig = HBaseConfiguration.create();
config.set("hbase.master","172.16.16.31");
config.set("hbase.master.port","60010");
config.set("hbase.zookeeper.quorum","172.16.16.29,172.16.16.30,172.16.16.47");
config.set("hbase.zookeeper.property.clientPort","2222");
HBaseAdminadmin =newHBaseAdmin(config);//新建一个数据库管理员
if(admin.tableExists("info")){//测试要操作的表是否已经存在
System.out.println("Targettable exist,drop it...");
admin.disableTable("info");//关闭一个表
admin.deleteTable("info");//删除一个表
}
System.out.println("createtable------------------------------------------------");
//新建一个info表的描述
HTableDescriptortableDescripter =newHtableDescriptor("info".getBytes());
//HTableDescriptor.parseFrom("info".getBytes());
tableDescripter.addFamily(newHColumnDescriptor("details"));//在表描述中添加列族
admin.createTable(tableDescripter);//根据配置好的描述建表
HTablehtable =newHTable(config,"info");//返回表info的实例
htable.setAutoFlush(true,true);
htable.setWriteBufferSize(1024* 1024 * 100);
byte[]rowkey = Bytes.toBytes("rowkey");
Putput =newPut(rowkey);
put.add(Bytes.toBytes("details"),Bytes.toBytes("name"),Bytes.toBytes("liuyue"));
put.add(Bytes.toBytes("details"),Bytes.toBytes("num"),Bytes.toBytes("24"));
put.add(Bytes.toBytes("details"),Bytes.toBytes("time"),Bytes.toBytes("2011"));
htable.put(put);
htable.flushCommits();
Getget =newGet(Bytes.toBytes("rowkey"));//新建Get实例,根据条件返回一个指定行里的数据
Resultr = htable.get(get);//返回一个指定行里的数据
byte[]value1 = r.getValue(Bytes.toBytes("details"),Bytes.toBytes("name"));
byte[]value2 = r.getValue(Bytes.toBytes("details"),Bytes.toBytes("num"));
byte[]value3 = r.getValue(Bytes.toBytes("details"),Bytes.toBytes("time"));
System.out.println(newString(value1));
System.out.println(newString(value2));
System.out.println(newString(value3));
htable.close();
admin.close();
}
catch(Exception e) {
e.printStackTrace();
}
}
}
hbase(main):010:0>scan 'info'
ROW COLUMN+CELL
rowkey column=details:name,timestamp=1390706177556, value=liuyue
rowkey column=details:num,timestamp=1390706177556, value=24
rowkey column=details:time,timestamp=1390706177556, value=2011
1row(s) in 0.0090 seconds
- Hadoop2.2.0 + HBase0.96.1.1部署实践
- 单机部署hadoop2.2+hbase0.96
- (4) Flume1.5.0的安装、部署、简单应用(含伪分布式、与hadoop2.2.0、hbase0.96的案例) (1-8)
- Hbase0.96.0 +hadoop2.2.0安装
- Flume1.5.0的安装、部署、简单应用(含分布式、与hadoop2.2.0、hbase0.96的案例)
- hadoop2.2.0+zookeeper3.4.5+hbase0.96.2+hive0.13.1分布式环境部署
- ubuntu12.04+hadoop2.2.0+zookeeper3.4.5+hbase0.96.2+hive0.13.1伪分布式环境部署
- ubuntu12.04+hadoop2.2.0+zookeeper3.4.5+hbase0.96.2+hive0.13.1伪分布式环境部署
- hadoop2.2.0 hbase0.96 安装snappy
- HBase0.96.0 for Hadoop2.2.0编译
- HBase0.96.0 for Hadoop2.2.0编译
- HBase0.96.2安装说明(hadoop2.2.0)
- Hadoop2.2.0 + HBase0.96 伪分布式安装
- Hbase0.98版本的安装部署配置管理(Hadoop2.3、Hbase0.98、Hive0.13整合)
- Hbase0.98版本的安装部署配置管理(Hadoop2.3、Hbase0.98、Hive0.13整合)
- Hbase0.98版本的安装部署配置管理(Hadoop2.3、Hbase0.98、Hive0.13整合)
- Flume1.5.0的安装、部署、简单应用(含伪分布式、与hadoop2.2.0、hbase0.96的案例
- Flume1.5.0的安装、部署、简单应用(含伪分布式、与hadoop2.2.0、hbase0.96的案例)
- git:解决git错误:fatal: The remote end hung up unexpectedly
- CloudStack 网络
- 一本对程序员很重要的书。
- Android中比较实用的书籍
- JSFL:选择你的元件输出名字
- Hadoop2.2.0 + HBase0.96.1.1部署实践
- PHP session
- FIXML and FpML - Background, Comparison, Integration & Interoperability Opportunities
- Hibernate使用LAZY延迟加载,initialize获取延迟加载关联内容
- Notification的功能与用法
- 我读经典(2):《C陷阱与缺陷》学习笔记
- 序卦와 六十甲子 (易經大意 韓長庚)
- 漂亮!用Qt Quick实现Coverflow效果
- SpringMVC中文乱码解决