zoukankan      html  css  js  c++  java
  • hadoop集群环境搭建之安装配置hadoop集群

    在安装hadoop集群之前,需要先进行zookeeper的安装,请参照hadoop集群环境搭建之zookeeper集群的安装部署

    1 将hadoop安装包解压到 /itcast/  (如果没有这个目录可以先自行创建之)

               tar -zxvf hadoop-2.6.4.tar.gz -C /itcast

    2 配置HDFS(hadoop2所有的配置文件都在$HADOOP_HOME/etc/hadoop目录下)

         2.1将hadoop添加到环境变量中,可以在一台机器上添加,然后发送给其他节点

         vim /etc/profile

                            export JAVA_HOME=/usr/java/jdk

                            export HADOOP_HOME=/itcast/hadoop-2.6.4                                   

                           export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
                           export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"

                            export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin                 

         2.2 修改配置文件

              2.2.1修改hadoop-env.sh

                export JAVA_HOME=/usr/local/jdk

            2.2.2修改core-site.xml

                <configuration>
                        <!-- 指定hdfs的nameservice为ns1 -->
                        <property>
                            <name>fs.defaultFS</name>
                            <value>hdfs://ns1</value>
                        </property>
                        <!-- 指定hadoop临时目录 -->
                        <property>
                            <name>hadoop.tmp.dir</name>
                            <value>/itcast/hadoop-2.6.4/tmp</value>
                        </property>
                        <!-- 指定zookeeper地址 -->
                        <property>
                            <name>ha.zookeeper.quorum</name>
                            <value>itcast14:2181,itcast15:2181,itcast16:2181</value>
                        </property>
                    </configuration>

         

             2.2.3修改hdfs-site.xml

    <configuration>
            <!--指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致 -->
            <property>
                <name>dfs.nameservices</name>
                <value>ns1</value>
            </property>
            <!-- ns1下面有两个NameNode,分别是nn1,nn2 -->
            <property>
                <name>dfs.ha.namenodes.ns1</name>
                <value>nn1,nn2</value>
                </property>
                <!-- nn1的RPC通信地址 -->
                <property>
                 <name>dfs.namenode.rpc-address.ns1.nn1</name>
                 <value>itcast11:9000</value>
                </property>
                <!-- nn1的http通信地址 -->
                <property>
                    <name>dfs.namenode.http-address.ns1.nn1</name>
                    <value>itcast11:50070</value>
                </property>
                <!-- nn2的RPC通信地址 -->
                <property>
                    <name>dfs.namenode.rpc-address.ns1.nn2</name>
                    <value>itcast12:9000</value>
                </property>
                <!-- nn2的http通信地址 -->
                <property>
                    <name>dfs.namenode.http-address.ns1.nn2</name>
                    <value>itcast12:50070</value>
                </property>
            <!-- 指定NameNode的元数据在JournalNode上的存放位置 -->
                <property>
                    <name>dfs.namenode.shared.edits.dir</name>
            <value>qjournal://itcast14:8485;itcast15:8485;itcast16:8485/ns1</value>
                </property>
                <!-- 指定JournalNode在本地磁盘存放数据的位置 -->
                <property>
                    <name>dfs.journalnode.edits.dir</name>
                    <value>/itcast/hadoop-2.6.4/journal</value>
                </property>
                <!-- 开启NameNode失败自动切换 -->
                <property>
                    <name>dfs.ha.automatic-failover.enabled</name>
                    <value>true</value>
                </property>
                <!-- 配置失败自动切换实现方式 -->
                <property>
        <name>dfs.client.failover.proxy.provider.ns1</name>         <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
                </property>
                <!-- 配置隔离机制 -->
                <property>
                    <name>dfs.ha.fencing.methods</name>
                    <value>sshfence</value>
                </property>
                <!-- 使用隔离机制时需要ssh免登陆 -->
                <property>
                    <name>dfs.ha.fencing.ssh.private-key-files</name>
                    <value>/root/.ssh/id_rsa</value>
                </property>
            </configuration>

       

               2.2.4修改slaves

    itcast14
    itcast15
    itcast16

       2.3 配置yarn

              2.3.1修改yarn-site.xml

    <configuration>
                <!-- 指定resourcemanager地址 -->
                <property>
                    <name>yarn.resourcemanager.hostname</name>
                    <value>itcast13</value>
                </property>
                <!-- 指定nodemanager启动时加载server的方式为shuffle server -->
                <property>
                    <name>yarn.nodemanager.aux-services</name>
                    <value>mapreduce_shuffle</value>
                </property>
        </configuration>

              2.3.2修改mapred-site.xml

           <configuration>
            <!-- 指定mr框架为yarn方式 -->
                <property>
                    <name>mapreduce.framework.name</name>
                    <value>yarn</value>
                </property>
            </configuration>

    2.4将配置好的hadoop拷贝到其他节点

    对于节点itcast12,itcast13

         scp –r /itcast/ itcast12:/

    对于节点itcast14,itcast15, itcast16

         scp –r /itcast/hadoop-2.6.4 itcast14:/itcast/ 

    至此,安装配置步骤已经全部完成,接下来就是要启动hadoop集群了!

    2.5启动zookeeper集群(分别在itcast14、itcast15、itcast16上启动zk)
    cd /itcast/zookeeper-3.4.5/bin/
    ./zkServer.sh start
    查看状态:
    ./zkServer.sh status
    (一个leader,两个follower)

    (这一步,itcast14,itcast15,itcast16将会新增一个QuorumPeerMain进程)

    注意:此时在查看状态的时候容易出现错误,错误提示如下:

    JMX enabled by default
    Using config: /hadoop/zookeeper/bin/../conf/zoo.cfg
    Error contacting service. It is probably not running.

    此时请参照文章安装zookeeper时候,可以查看进程启动,但是状态显示报错:Error contacting service. It is probably not running进行修改


    2.6启动journalnode(在itcast11上启动所有journalnode)
    cd /itcast/hadoop-2.6.4
    sbin/hadoop-daemons.sh start journalnode
    (在itcast14,itcast15,itcast16上运行jps命令检验,多了JournalNode进程)

    注:此时如果在itcast11上也多了一个JournalNode进程,就需要查看slaves配置文件,将该配置文件中的localhost一行去掉。

    2.7格式化HDFS
    在itcast11上执行命令:
    hadoop namenode -format
    格式化后会在根据core-site.xml中的hadoop.tmp.dir配置生成个文件,这里我配置的是/itcast/hadoop-2.6.4/tmp,然后将/itcast/hadoop-2.6.4/tmp拷贝到itcast12的/itcast/hadoop-2.6.4/下。
    scp -r tmp/ itcast12:/itcast/hadoop-2.6.4/


    2.8格式化ZK(在itcast11上执行即可)
    hdfs zkfc -formatZK

    2.9启动HDFS(在itcast11上执行)
    sbin/start-dfs.sh

    (这一步itcast11,itcast12将新增一个namenode进程和一个DFSZKFailoverController进程,itcast14,itcast15,itcast16将会新增一个datanode进程)

    2.10启动YARN(在itcast13上执行,同时需要设置itcast13到itcast14,itcast15,itcast16的免登陆,否则将会出现上传的文件无法查看的情况)
    sbin/start-yarn.sh

    (这一步itcast13将新增一个ResourceManager进程,itcast14,itcast15,itcast16将会新增一个NodeManager进程)

    至此,hadoop集群的启动工作完成,接下来就是验证是否成功了!

    可以利用浏览器访问:
    http://192.168.1.201:50070
    NameNode 'itcast11:9000' (active)
    http://192.168.1.202:50070
    NameNode 'itcast12:9000' (standby)

    验证HDFS HA
    首先向hdfs上传一个文件
    hadoop fs -put /etc/profile /profile

    查看是否上传到了根目录下
    hadoop fs -ls /


    然后再kill掉active的NameNode
    kill -9 <pid of NN>
    通过浏览器访问:http://192.168.1.202:50070
    NameNode 'itcast12:9000' (active)
    这个时候itcast12上的NameNode变成了active

    注:此时如果itcast12仍然是stanby状态,是因为没有设置itcast12到itcast11的ssh免登陆.

    在执行命令:
    hadoop fs -ls /
         -rw-r--r-- 3 root supergroup 1926 2014-02-06 15:36 /profile
    刚才上传的文件依然存在!!!
    手动启动那个挂掉的NameNode
    sbin/hadoop-daemon.sh start namenode
    通过浏览器访问:http://192.168.1.201:50070
    NameNode 'itcast01:9000' (standby)

    (如果你想通过浏览器查看上传的文件browse the filesystem,却无法打开网页,是因为没有配置windows下的profile文件,可以打开C:WindowsSystem32driversetc下的profile文件,增加如下内容:

    192.168.1.201 itcast11
    192.168.1.202 itcast12
    192.168.1.203 itcast13
    192.168.1.204 itcast14
    192.168.1.205 itcast15
    192.168.1.206 itcast16

    这样,就可以通过浏览器访问你上传的文件了!!)

    验证YARN:
    运行一下hadoop提供的demo中的WordCount程序:
    hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar /words /resultout

    (words文件请自行创建之)


    OK,大功告成!!!

  • 相关阅读:
    Linux命令应用大词典-第11章 Shell编程
    Kubernetes 学习12 kubernetes 存储卷
    linux dd命令
    Kubernetes 学习11 kubernetes ingress及ingress controller
    Kubernetes 学习10 Service资源
    Kubernetes 学习9 Pod控制器
    Kubernetes 学习8 Pod控制器
    Kubernetes 学习7 Pod控制器应用进阶2
    Kubernetes 学习6 Pod控制器应用进阶
    Kubernetes 学习5 kubernetes资源清单定义入门
  • 原文地址:https://www.cnblogs.com/xiaohua92/p/5469716.html
Copyright © 2011-2022 走看看