hadoop2.x搭建和部署以及遇到的问题

一、hadoop2.0解决了什么:

        1、1.0中NameNode单点故障问题,难以应用于在线场景

        2、NameNode压力过大,内存受限,影响系统扩展性

        3、解决了支持除了mapReduce之外的计算框架,比如Spark、Strom等

        4、对于1.0的api仍可以使用

二、这里我们设计分布图做如下 1 表示存在于此机器上

部署hadoop2.x 哪里有namenode 哪里就又zkfc

NameNode DataNode ZK ZKFC JN RM DM
192.168.68.132 1 1 1 1
192.168.68.133 1 1 1 1 1
192.168.68.134 1 1 1 1
192.168.68.135 1 1 1 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文件           

配置命名服务
<property>
  <name>dfs.nameservices</name>
  <value>myservice</value>   服务名
</property>
配置namenode的名字
<property>
  <name>dfs.ha.namenodes.myservice</name>
  <value>nn1,nn2</value>  这里的名字不是主机名只是一个名字
</property>
配置namenode的rpc协议和端口这里配置几个由上面的namenode决定
<property>
  <name>dfs.namenode.rpc-address.myservice.nn1</name>
  <value>192.168.68.132:8020</value>
</property>
<property>
  <name>dfs.namenode.rpc-address.myservice.nn2</name>
  <value>192.168.68.133:8020</value>
</property>
配置两个namenode的http协议的端口
<property>
  <name>dfs.namenode.http-address.myservice.nn1</name>
  <value>192.168.68.132:50070</value>
</property>
<property>
  <name>dfs.namenode.http-address.myservice.nn2</name>
  <value>192.168.68.133:50070</value>
</property>
配置JournalNodes地址
<property>
  <name>dfs.namenode.shared.edits.dir</name>
 <value>qjournal://192.168.68.133:8485;192.168.68.134:8485;192.168.68.135:8485/myservice</value>
</property>
配置客户端使用的类----通过这个类去找到activenamenode
<property>
  <name>dfs.client.failover.proxy.provider.myservice</name>
  <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
配置ssh
<property>
  <name>dfs.ha.fencing.ssh.private-key-files</name>
  <value>/root/.ssh/id_dsa</value>
</property>
配置journalNode的工作目录
<property>
  <name>dfs.journalnode.edits.dir</name>
  <value>/opt/jn/data</value>
</property>
配置开启自动切换
 <property>
   <name>dfs.ha.automatic-failover.enabled</name>
   <value>true</value>
 </property>

如果我们不使用hostname 直接使用ip 还需要添加如下配置

<property>
    <name>dfs.namenode.datanode.registration.ip-hostname-check</name>
    <value>false</value>
</property>

    5、core-site 文件中配置

配置Zookeeper集群
<property>
   <name>ha.zookeeper.quorum</name>
   <value>192.168.68.132:2181,192.168.68.134:2181,192.168.68.135:2181</value>
 </property>
配置namenode入口
<property>
  <name>fs.defaultFS</name>
  <value>hdfs://myservice</value> 这里配置的是集群的名字
</property>
配置hadoop的临时目录
<property>
  <name>hadoop.tmp.dir</name>
  <value>/opt/hadoop2</value>
</property>	

    6、配置datanode   

注意这里一定不要配置master 因为没有secodaynamenode 这里使用junamenode替换了

    7、启动JournalNodes  进入到sbin目录下启动JN ----这里我们配置三个所以启动三个

./hadoop-daemon.sh start journalnode
8、在任何一台namenode上格式化namenode 进入bin目录下执行

    9、拷贝格式化后的文件到其他namenode上

方式一直接宝贝文件夹过去
方式二、使用命令进行拷贝,前提是先启动当前namenode
./hadoop-daemon.sh start namenode

启动好后执行命令 在没有格式化的namenode上执行 hdfs namenode -bootstrapStandby

在这台namenode上查看是否拷贝成功

    10、格式化zkfc     [root@localhost bin]# ./hdfs zkfc -formatZK

五、Zookeeper的部署和配置

    1、Index of /dist/zookeeper/zookeeper-3.4.6下载

    2、rz 上传  tar -zxvf zookeeper-3.4.6.tar.gz 解压

    3、进入配置文件 复制zoo_sample.cfg

    4、修改复制出来的配置文件

    5、配置zk集群的唯一编号

            

    server.1为zookeeper集群的唯一编号 ------- 同时在dataDir文件夹里创建myid指明当前zk的id

        如果当前机器为server.1那么文件里就写1

        

    6、同时拷贝到其他服务器上进行配置

编辑其他机器上myid分别与ZK的配置文件第5步下图对应

    7、拷贝ZK到其他服务器做集群:如下

     8、配置环境变量 指向ZK的bin目录

不重启使配置文件生效

    9、同样其他服务器也要配置

10、启动ZK

11、最后的效果: 跟我们当初设计的集群分布是一样的

12、创建文件夹和上传文件到hdfs

[root@localhost bin]# ./hdfs dfs -mkdir -p /us/file
[root@localhost bin]# ./hdfs dfs -put /home/ma/Downloads/soft/jdk-8u77-linux-x64.tar.gz /us/file

hadoop2.0到这里也就基本上部署完成了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值