一、hadoop2.0解决了什么:
1、1.0中NameNode单点故障问题,难以应用于在线场景
2、NameNode压力过大,内存受限,影响系统扩展性
3、解决了支持除了mapReduce之外的计算框架,比如Spark、Strom等
4、对于1.0的api仍可以使用
二、这里我们设计分布图做如下 1 表示存在于此机器上
以下的部署都是按照这里的设计分布的
三、下载hadoop
这里我下载的是2.5.0 因为2.5.2官方只提供了32位下载源码后还需要自己编译,这里就曲线救国来个2.5.0的
https://archive.apache.org/dist/hadoop/common/hadoop-2.5.0/
四、具体实现:
1、上传到服务器 rz 上传 tar-zxvf hadoop-2.5.0
2、查看当前版本 cd native 执行 file libhadoop.so.1.0.0查看是64位还是32位
3、修改配置文件,此时的配置文件不在conf而是在etc文件夹里,配置java环境变量
4、修改hdfs-site.xml文件
配置命名服务
dfs.nameservices
myservice 服务名
配置namenode的名字
dfs.ha.namenodes.myservice
nn1,nn2 这里的名字不是主机名只是一个名字
配置namenode的rpc协议和端口这里配置几个由上面的namenode决定
dfs.namenode.rpc-address.myservice.nn1
192.168.68.132:8020
dfs.namenode.rpc-address.myservice.nn2
192.168.68.133:8020
配置两个namenode的http协议的端口
dfs.namenode.http-address.myservice.nn1
192.168.68.132:50070
dfs.namenode.http-address.myservice.nn2
192.168.68.133:50070
配置JournalNodes地址
dfs.namenode.shared.edits.dir
qjournal://192.168.68.133:8485;192.168.68.134:8485;192.168.68.135:8485/myservice
配置客户端使用的类----通过这个类去找到activenamenode
dfs.client.failover.proxy.provider.myservice
org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
配置ssh
dfs.ha.fencing.ssh.private-key-files
/root/.ssh/id_dsa
配置journalNode的工作目录
dfs.journalnode.edits.dir
/opt/jn/data
配置开启自动切换
dfs.ha.automatic-failover.enabled
true
如果我们不使用hostname 直接使用ip 还需要添加如下配置
dfs.namenode.datanode.registration.ip-hostname-check
false
5、core-site 文件中配置
配置Zookeeper集群
ha.zookeeper.quorum
192.168.68.132:2181,192.168.68.134:2181,192.168.68.135:2181
配置namenode入口
fs.defaultFS
hdfs://myservice 这里配置的是集群的名字
配置hadoop的临时目录
hadoop.tmp.dir
/opt/hadoop2
6、配置datanode
10、格式化zkfc [root@localhost bin]# ./hdfs zkfc -formatZK
五、Zookeeper的部署和配置
1、https://archive.apache.org/dist/zookeeper/zookeeper-3.4.6/下载
2、rz 上传 tar -zxvf zookeeper-3.4.6.tar.gz 解压
3、进入配置文件 复制zoo_sample.cfg
5、配置zk集群的唯一编号
如果当前机器为server.1那么文件里就写1
6、同时拷贝到其他服务器上进行配置
7、拷贝ZK到其他服务器做集群:如下
8、配置环境变量 指向ZK的bin目录
9、同样其他服务器也要配置
10、启动ZK
11、最后的效果: 跟我们当初设计的集群分布是一样的
12、创建文件夹和上传文件到hdfs
hadoop2.0到这里也就基本上部署完成了