搭建Hadoop集群
来源:互联网 发布:动态规划矩阵连乘问题 编辑:程序博客网 时间:2024/05/16 08:08
Hadoop由HDFS和MapReduce计算框架两部分构成。另有基于Hadoop开发的一些上层应用如HBase、Pig、Hive使得Hadoop更适合解决特定问题或更容易使用。
一、HDFS和MapReduce
在大数据问题上,HDFS用存储,MapReduce用于计算。尽管Hadoop中的HDFS和MapReduce计算框架可以独立部署、独立使用,但在实际使用过程中通常将二者同时部署。
使用的版本:Hadoop-1.1.2
准备部署环境
1)使用VMWare克隆三台虚拟机,分别设置好主机名和IP地址,确保三台虚拟机能够互通。以Ubuntu 12.04为例在/etc/hostname中指定主机名:hadoop-node-1、hadoop-node-2、hadoop-node-3
在/etc/network/interfaces中配置静态IP:192.168.1.201、192.168.1.202、192.168.1.203
auth eth0
iface eth0 inet static
address 192.168.1.xxx
gateway 192.168.1.gxx
netmask 255.255.255.0
在/etc/hosts中指定主机名地址映射
127.0.0.1 localhost
192.168.1.201 hadoop-node-1
192.168.1.202 hadoop-node-2
192.168.1.203 hadoop-node-3
2)确保在三台虚似机上安装了Java,最低版本1.6
3)确保在三台虚拟机上安装了SSH服务及其客户端
集群结点规划
HDFS和MapReduce均为Master/Slaver结构。这里我们使用三个结点,一个结点(hadoop-node-1)用作Master,运行HDFS的NodeNode程序和MapReduce的JobTracker程序,另两个结点(hadoop-node-2和hadoop-node-3)用作Slaver,在每个Slaver上运行HDFS的DataNode程序和MapReduce的TaskTracker程序。SSH无口令登录
为使Master启动程序能够自动登录到Slaver上启动需要的Slaver程序,需要为Master配置SSH无口令登录。首先,在Master(hadoop-node-1)上生成密钥对,执行命令ssh-keygen -t rsa -f ~/.ssh/id_rsa,在命令执行过程中选择默认公钥文件名和空口令,命令执行结束后便在~/.ssh目录下生成了私钥文件id_rsa和公钥文件id_rsa.pub。
然后,将上一步生成的公钥文件的内容附写到两个用作Slaver的结点的~/.ssh/authorized_keys文件中。附写可以使用命令 cat file1 >> file2,远程拷贝可以使用scp命令。
部署和配置
1)将下载得到的Hadoop压缩包解压到三台虚拟机的相同位置。这里使用相同位置是必要的,Master启动程序通过SSH登录到Slaver所在虚拟机后要到“同一”位置启动Slaver程序。2)指定Java
在conf/hadoop-env.sh中指定Java的安装位置,如:export JAVA_HOME=/usr/lib/jvm/java-6-openjdk-i386
3)Master配置
在conf/core-site.xml文件中指定NameNode的绑定地址和端口,JobTracker也将根据此配置项确定要使用的文件系统的访问地址。
<property>
<name>fs.default.name</name>
<value>hdfs://hadoop-node-1:9000</value>
</property>
在conf/hdfs-site.xml文件中指定NameNode需要的配置信息,如元数据存储位置、数据块副本数、是否启用权限检查。
<property>
<name>dfs.name.dir</name>
<value>/HADOOP_HOME/hdfs-data</value> <!-- 若没有特殊考虑,可以将数据目录和Hadoop的文件放一起,方便管理 -->
</property>
<property>
<name>dfs.replication</name>
<value>2</value> <!-- 我们只有两个Slaver,所以副本数尽可能不要大于2 -->
</property>
<property>
<name>dfs.permissions</name> <!-- HDFS的权限检查实在没有必要,关闭权限检查,免得出现客户端无权访问的问题 -->
<value>false</value>
</property>
在conf/mapred-site.xml文件中指定JobTracker需要的配置信息,如JobTracker的绑定地址和端口。
<property>
<name>mapred.job.tracker</name>
<value>hadoop-node-1:9001</value>
</property>
在conf/slaves文件中指定各个Slaver所在的主机。NameNode和JobTracker的启动程序会据此登录到相应主机启动各个DataNode和TaskTracker。
若有需要,可以在conf/masters文件中指定需要运行SecondaryNameNode的主机。否则,清空该文件。
4)Slaver配置
在conf/core-site.xml文件中为DataNode指定NameNode的访问地址。
<property>
<name>fs.default.name</name>
<value>hdfs://hadoop-node-1:9000</value>
</property>
在conf/hdfs-site.xml文件中指定DataNode需要的配置信息,如数据块存储位置。需要注意,数据块的存储目录应该只允许所有者写(rwxr-xr-x),否则DataNode会出错。
<property>
<name>dfs.data.dir</name>
<value>/HADOOP_HOME/hdfs-data</value> <!-- 若没有特殊考虑,可以将数据目录和Hadoop的文件放一起,方便管理 -->
</property>
在conf/mapred-site.xml文件中指定TaskTracker需要的配置信息,如JobTracker的访问地址、Map任务的中间结果的本地存储位置。
<property>
<name>mapred.job.tracker</name>
<value>hadoop-node-1:9001</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>/HADOOP_HOME/mapred-data</value> <!-- 若没有特殊考虑,可以将数据目录和Hadoop的文件放一起,方便管理 -->
</property>
启动Hadoop集群
1)在NameNode所在结点(hadoop-node-1)启动HDFS:bin/start-dfs.sh 停止HDFS:bin/stop-dfs.sh 默认查看页面:http://hadoop-node-1:50070
2)在JobTracker所在结点(hadoop-node-1)
启动MapReduce:bin/start-mapred.sh 停止MapReduce:bin/stop-mapred.sh 默认查看页面:http://hadoop-node-1:50030
二、HBase
HBase是一款分布式、面向列存储的NoSQL数据库。对于小量数据、更新操作,直接访问HDFS效率不高,在这种情况下可以使用HBase。
使用版本:Hbase-0.95.0-Hadoop1
这里还是使用前面准备好的三台虚拟机来部署、运行HBase。
部署方案:在hadoop-node-1上运行一个Master程序,而在hadoop-node-2和hadoop-node-3上各运行一个RegionServer程序;使用随HBase一起启动和停止的ZooKeeper集群,ZooKeeper集群在三台虚拟机上各运行一个Peer。
部署和配置
1)将下载得到的HBase压缩包解压到三台虚拟机的相同位置。这里使用相同位置是必要的,Master启动程序通过SSH登录到远程虚拟机后要到“同一”位置启动RegionServer程序和ZooKeeper程序。2)指定Java
在conf/hbase-env.sh中指定Java的安装位置,如:export JAVA_HOME=/usr/lib/jvm/java-6-openjdk-i386
3)配置HBase
在conf/hbase-site.xml文件中指定HBase需要的配置信息,如用来持久存储数据的文件系、是否以分布模式运行、运行ZooKeeper集群的主机。
<property>
<name>hbase.rootdir</name>
<value>hdfs://hadoop-node-1:9000</value> <!-- 使用HDFS作为底层持久存储系统是典型使用场景 -->
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value> <!-- 以分布模式运行 -->
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>hadoop-node-1,hadoop-node-2,hadoop-node-3</value> <!-- 指定运行ZooKeeper集群的主机,在我们的方案中,HBase启动程序在启动HBase的同时会去指定的主机启动ZooKeeper集群 -->
</property>
在conf/regionservers文件中指定要运行RegionServer程序的各台主机,每行指定一个主机名或IP地址。
4)配置ZooKeeper
这里暂时需要配置的ZooKeeper配置项不多,可以在HBase的主配置文件conf/hbase-site.xml中添加ZooKeeper的配置信息。
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/HBASE_HOME/zk-data</value> <!-- 指定ZooKeeper的数据存储位置。若没有特殊考虑,可以将ZooKeeper的数据目录和HBase的文件放一起,方便管理 -->
</property>
启动HBase集群
首先确保要使用的HDFS已经启动。然后,在要运行HBase的Master程序的结点(hadoop-node-1)执行命令:启动HBase:bin/start-hbase.sh 停止HBase:bin/stop-hbase.sh 启动HBase的Shell程序:bin/hbase shell
Master默认查看页面:http://hadoop-node-1:60010 RegionServer默认查看页面:http://hadoop-node-2:60030、http://hadoop-node-3:60030
- hadoop集群搭建(hadoop)
- HADOOP: 搭建hadoop集群
- hadoop集群搭建
- Hadoop集群的搭建
- Hadoop集群搭建
- Hadoop集群搭建
- 搭建hadoop集群
- Nutch+Hadoop集群搭建
- Hadoop集群搭建
- Hadoop集群搭建
- Hadoop环境搭建-集群
- 搭建hadoop集群
- 搭建hadoop集群
- Hadoop集群搭建
- Nutch+Hadoop集群搭建
- 如何搭建hadoop集群
- hadoop分布式集群搭建
- Hadoop集群搭建
- 一种判断处理器大/小端的程序
- TODO:android 属性可以使用多个style么?
- hdu 2552 三足鼎立 关于tan的数论
- 找到治疗强迫幻想的症的方法啦!哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈!
- settings 默认设置
- 搭建Hadoop集群
- 代码清单1-1 我们第一个真正意义上的程序
- Spring MVC 转换器
- 基于NS2的网络路由协议仿真(AODV、COPE+AODV)
- oracle 数据库概述
- android 底部控件,随软键盘弹出,跟着上移
- 代码清单1-2 猜数游戏
- SurfaceView中的getSystemService
- (转)某资深程序员写给后来者的忠…