zoukankan      html  css  js  c++  java
  • 一、hadoop安装与配置

    准备环境:

    系统:centos6.5 64

    192.168.211.129   master

    192.168.211.131   slave1

     

    在两台服务器上都要配置ssh免密码登录

    192.168.211.129上

    vim /etc/hosts最后添加

      192.168.211.129  master

      192.168.211.131  slave1

    在192.168.211.131上

    vim /etc/hosts最后添加

      192.168.211.129  master

      192.168.211.131  slave1

    主机ip:192.168.211.129(hostname: master)

    ssh无密码登陆的远程机ip:192.168.211.131(hostname: slave1)

     

    首先要修改master和slave1 的配置文件:

    vi  /etc/ssh/sshd_config

    (要确保这些字符前无注释符号“#”)

    RSAAuthentication  yes

    PubkeyAuthentication yes

    AuthorizedKeysFile  .ssh/authorized_keys

    PasswordAuthentication yes

    PeimitEmptyPasswords yes

    1.在本地机上输入命令: ssh-keygen -t rsa

    2.接着一路按回车,默认情况下ssh生成的公密钥会被存储到目录/root/.ssh下(注意这个文件夹的权限为700),分别为id_rsa id_rsa.pub

    3.在本地机上创建文件 authorized_keys(权限为600

    touch /root/.ssh/authorized_keys

    并将公钥追加到authorized_keys文件中:

    cat id_rsa.pub >> authorized_keys

    4.修改文件夹/root/.ssh的权限:

    (本地机和远程机都要修改)

    chmod 700 /root/.ssh

    5.修改文件的属性:

    chmod 600 /root/.ssh/authorized_keys

    6.将公钥复制到ip地址为192.168.211.131的远程机上:

    ssh-copy-id  -i  /root/.ssh/id_rsa/pub  root@192.168.211.131 (实践证明在传送公钥时,这个命令好于scp命令 )

    笔者在输入命令时已经在远程主机上创建了文件夹如下:/root/.ssh/,并且,已经按上文修改了权限/.ssh (700)

    7.在本地机master上执行命令:

    ssh-add  /root/.ssh/id_rsa

    这个是为了将公钥添加进来。

    8.重新启动ssh服务:

    service sshd restart

    9. 在本地主机上输入:

    ssh slave1(回车)

    即可登录到远程主机上了。

    10.若要配置能在slave1上远程无密码登录master,只需做和master一样的操作即可:首先要修改主机ssh连接到的远程机的配置文件:

    11.在本地机上输入命令: ssh-keygen -t rsa

    12.接着一路按回车,默认情况下ssh生成的公密钥会被存储到/root/.ssh这个文件夹下(注意这个文件夹的权限为700),分别为id_rsa id_rsa.pub

    13.将公钥追加到authorized_keys文件中:

    cat id_rsa.pub >> authorized_keys

    14.修改文件的属性:

    chmod 600 /root/.ssh/authorized_keys

    15.将公钥复制到ip地址为192.168.211.129master上:

    ssh-copy-id  -i  /root/.ssh/id_rsa/pub  root@192.168.211.129 (实践证明在传送公钥时,这个命令好于scp命令 )

    16.重新启动ssh服务:

    service sshd restart

    17. 在本地主机上输入:

    ssh master(回车)

    即可登录到master上了。

     

    master操作:

    1、官网下载Hadoop  hadoop-2.7.3.tar.gz(所有安装包在当前文件夹内都有)
    2.安装sshrsyncJava1.7(Java1.7直接去官网下载rpm包,rpm安装即可)

     我的网不好,我自己在百度云盘保存了一份java1.7.rpm。链接地址是:http://pan.baidu.com/s/1hs9l8by
    3./home下新建文件夹hadoop,然后将hadoop-2.7.3.tar.gz上传至此文件夹下,使用tar命令解压

    4.进入到目录/home/hadoop/hadoop-2.7.3/etc/hadoop中,修改相应配置,依次配置

     hadoop-env.shyarn-env.shslavescore-site.xmlhdfs-site.xmlmapred-site.xml yarn-site.xml 7个文件。

        (1)、设置JAVA_HOME环境变量(我的JDK安装目录为/usr/java/latest(rpm默认的安装位置))

                           

         vi命令编辑hadoop-env.sh,找到相应位置修改如下:

          # The java implementation to use.

          #export JAVA_HOME=${JAVA_HOME}

          export JAVA_HOME=/usr/java/latest

     

            (2)、vi命令编辑yarn-env.sh,找到相应位置修改如下:

    # some Java parameters

    # export JAVA_HOME=/home/y/libexec/jdk1.6.0/

    export JAVA_HOME=/usr/java/latest

     

                (3)、编辑文件core-site.xml文件,指定默认文件系统和工作空间(现在路径下还没有tmp文件夹,执行完hdfs格式化后便可看到相关文件)

     

          <configuration>

            <property>

              <name>fs.defaultFS</name>

              <value>hdfs://192.168.211.129:9000</value>#指定默认文件系统,不要写localhost,namenode与datanode使用9000端口进行通信

            </property>

            <property>

              <name>hadoop.tmp.dir</name>

              <value>/home/hadoop/hadoop-2.7.2/tmp/</value>

    #指定hadoop工作空间,也就是说master与slave的数据实际存放目录就是/home/hadoop/hadoop-2.7.2/tmp/

            </property>

          </configuration>

     

                (4)、编辑文件etc/hadoop/hdfs-site.xml文件,设置文件副本数,文件副本数不要大于slave节点的实际数量,比如我这里只有一个slave1,所以文件副本数设置为1

     

          <configuration>

            <property>

              <name>dfs.replication</name>

              <value>1</value>#文件副本数

            </property>

          </configuration>

     

                 (5)、编辑文件etc/hadoop/mapred-site.xml文件,此文件其实不存在,而是存在mapred-site.xml.template,所以执行命令mv mapred-site.xml.template mapred-site.xml修改此文件名,来指定资源调度框架

     

          <configuration>

            <property>

              <name>mapreduce.framework.name</name>

              <value>yarn</value>#指定资源调度框架

            </property>

          </configuration>

         (6)、编辑文件etc/hadoop/yarn-site.xml

    <configuration>

        <property>

            <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>

            <value>org.apache.hadoop.mapred.ShuffleHandler</value>

        </property>

     

            <property>

              <name>yarn.nodemanager.aux-services</name>

              <value>mapreduce_shuffle</value>

            </property>

     

        <property>

            <name>yarn.resourcemanager.address</name>

            <value>master:8032</value>   #这里的master也可以写成master的ip

        </property>

        <property>

            <name>yarn.resourcemanager.scheduler.address</name>

            <value>master:8030</value>

        </property>

        <property>

            <name>yarn.resourcemanager.resource-tracker.address</name>

            <value>master:8035</value>

        </property>

        <property>

            <name>yarn.resourcemanager.admin.address</name>

            <value>master:8033</value>

        </property>

        <property>

           <name>yarn.resourcemanager.webapp.address</name>

           <value>master:8088</value>

        </property>

     

    </configuration>

                 (7)、在master中编辑文件etc/hadoop/slaves,加入slave1的IP         

    192.168.211.131

                      为了保证稳定,最好写ip,一般情况下写主机名也可以

    至此,master配置就完成了

     

     

    slave1配置:

    1. slave1配置步骤的前4步与master的前4步是一模一样的,连配置的内容都是相同的
    2. 2.    slave1不配置/home/hadoop/hadoop-2.7.2/etc/hadoop/slaves文件,把该文件中的默认内容清空,让该文件为空即可。

    配置完masterslave后,格式化hdfs系统

    1. 关闭master与slave1的防火墙

    service iptables stop

    setenforce 0    

    1. hadoop命令一般在bin文件夹下,所以要执行相关命令要在bin目录下进行操作,为了以后方便,所以要先把hadoop的bin目录配置到环境变量中,还有些命令在sbin目录中,所以也要配置到环境变量

               vim  /etc/profile   在最后加入

    export JAVA_HOME=/usr/java/latest
    
    export HADOOP_HOME=/home/hadoop/hadoop-2.7.2
    
    export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

              保存后记得用命令source /etc/profile配置立即生效
             (执行格式化前可以看到hadoop安装目录/home/hadoop/hadoop-2.7.2不存在tmp文件夹)

             然后执行 

    hadoop namenode -format命令,会发现以前/home/hadoop/hadoop-2.7.2不存在tmp文件夹,现在已经有了

    3.启动HDFS  命令start-all.sh(关闭是stop-all.sh

                启动完后用jps命令可以查看正在启动的java服务

    [root@master hadoop-2.7.2]# jps

    8428 SecondaryNameNode

    9265 Jps

    8235 NameNode

    8582 ResourceManager

          netstat -nltp命令查看所监听的端口

     

    [root@localhost hadoop-2.7.2]# netstat -nltp

    Active Internet connections (only servers)

    Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name  

    tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      1100/rpcbind       

    tcp        0      0 127.0.0.1:58165             0.0.0.0:*                   LISTEN      2529/java          

    tcp        0      0 0.0.0.0:50070               0.0.0.0:*                   LISTEN      2435/java          

    tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1313/sshd          

    tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      1190/cupsd         

    tcp        0      0 0.0.0.0:57815               0.0.0.0:*                   LISTEN      1118/rpc.statd     

    tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1389/master        

    tcp        0      0 0.0.0.0:50010               0.0.0.0:*                   LISTEN      2529/java          

    tcp        0      0 0.0.0.0:50075               0.0.0.0:*                   LISTEN      2529/java          

    tcp        0      0 0.0.0.0:50020               0.0.0.0:*                   LISTEN      2529/java          

    tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      2435/java          

    tcp        0      0 0.0.0.0:50090               0.0.0.0:*                   LISTEN      2718/java          

    tcp        0      0 :::44046                    :::*                        LISTEN      1118/rpc.statd     

    tcp        0      0 :::111                      :::*                        LISTEN      1100/rpcbind       

    tcp        0      0 :::22                       :::*                        LISTEN      1313/sshd          

    tcp        0      0 ::1:631                     :::*                        LISTEN      1190/cupsd         

    tcp        0      0 ::1:25                      :::*                        LISTEN      1389/master

     

    NameNode和DataNode是通过9000端口通信的

    验证:

    在master上输入以下命令:

    [root@master hadoop-2.7.2]# hdfs dfsadmin –report

    Configured Capacity: 18965917696 (17.66 GB)

    Present Capacity: 14551302144 (13.55 GB)

    DFS Remaining: 14551277568 (13.55 GB)

    DFS Used: 24576 (24 KB)

    DFS Used%: 0.00%

    Under replicated blocks: 0

    Blocks with corrupt replicas: 0

    Missing blocks: 0

    Missing blocks (with replication factor 1): 0

     

    -------------------------------------------------

    Live datanodes (1):

     

    Name: 192.168.211.131:50010 (slave1)

    Hostname: slave1

    Decommission Status : Normal

    Configured Capacity: 18965917696 (17.66 GB)

    DFS Used: 24576 (24 KB)

    Non DFS Used: 4414615552 (4.11 GB)

    DFS Remaining: 14551277568 (13.55 GB)

    DFS Used%: 0.00%

    DFS Remaining%: 76.72%

    Configured Cache Capacity: 0 (0 B)

    Cache Used: 0 (0 B)

    Cache Remaining: 0 (0 B)

    Cache Used%: 100.00%

    Cache Remaining%: 0.00%

    Xceivers: 1

    Last contact: Wed Apr 19 22:28:09 CST 2017

    50070端口是提供检测hadoop的一个Web页面, 我的master  ip192.168.211.129,访问网址http://192.168.211.129:50070/   可查看效果

     

     

     到此master与slave已经配置并启动完了。

     

    测试存放文件

    在master上执行以下命令,将文件/jdk-7u80-linux-x64.rpm存放到集群中

    [root@master hadoop-2.7.2]#hadoop fs -put /jdk-7u80-linux-x64.rpm  hdfs://192.168.211.129:9000/

    注意下划线“/”一定要写全了。

    [root@master hadoop-2.7.2]# hadoop fs -ls /

    Found 1 items

    -rw-r--r--   1 root supergroup  138090286 2017-04-19 22:48 /jdk-7u80-linux-x64.rpm

    可以看到文件已经存放到集群上了

    master上可以看到文件实际并没有存放在master上,而是存放在slave1上。

    [root@master hadoop-2.7.2]# ll /home/hadoop/hadoop-2.7.2/tmp/dfs/name/current/

    总用量 1052

    -rw-r--r--. 1 root root      42 4  19 22:28 edits_0000000000000000001-0000000000000000002

    -rw-r--r--. 1 root root 1048576 4  19 22:48 edits_inprogress_0000000000000000003

    -rw-r--r--. 1 root root     351 4  19 22:26 fsimage_0000000000000000000

    -rw-r--r--. 1 root root      62 4  19 22:26 fsimage_0000000000000000000.md5

    -rw-r--r--. 1 root root     351 4  19 22:28 fsimage_0000000000000000002

    -rw-r--r--. 1 root root      62 4  19 22:28 fsimage_0000000000000000002.md5

    -rw-r--r--. 1 root root       2 4  19 22:28 seen_txid

    -rw-r--r--. 1 root root     207 4  19 22:26 VERSION

    slave1上查看:

     [root@slave1 hadoop-2.7.2]# ll /home/hadoop/hadoop-2.7.2/tmp/dfs/data/current/BP-293326079-192.168.211.129-1492611998445/current/finalized/subdir0/subdir0/

    总用量 135916

    -rw-r--r--. 1 root root 134217728 4  19 22:48 blk_1073741825

    -rw-r--r--. 1 root root   1048583 4  19 22:48 blk_1073741825_1001.meta

    -rw-r--r--. 1 root root   3872558 4  19 22:48 blk_1073741826

    -rw-r--r--. 1 root root     30263 4  19 22:48 blk_1073741826_1002.meta

    可以看到,标记为蓝色的两行即为存放的文件,它已经被分成了两部分存放。

    附加:

    Hadoop 添加删除Slave


    添加新节点

    新机器配置完之后,slave和datanode-allow.list文件加入该主机名。

    该节点上启动进程:

    hadoop-daemon.sh start datanode

     

    以下文件是访问控制列表,一般不写也行

    在hdfs-site.xml文件中添加如下配置:

    <property>

    <name>dfs.hosts</name>

    <value> /home/hadoop/hadoop-2.7.2/etc/hadoop/datanode-allow.list</value>

    </property>

    <property>

    <name>dfs.hosts.exclude</name>

    <value> /home/hadoop/hadoop-2.7.2/etc/hadoop/datanode-deny.list</value>

    </property>

    这两个文件分别是允许Slave连接Namenode的列表和拒绝连接的列表,默认是没有的,需要手动创建。

    cat /home/hadoop/hadoop-2.7.2/etc/hadoop/datanode-allow.list

    192.168.211.132

    /home/hadoop/hadoop-2.7.2/etc/hadoop/datanode-deny.list

    没有要删除的,写为空文件即可。

    删除节点

    在对应目录下新建datanode-deny.list文件,内容为需要删除的Slave的主机名或ip,一行一个。

    执行命令重新读取配置:

    hdfs dfsadmin -refreshNodes

    使用

    hdfs dfsadmin -report

    可以看到该节点会处于Decommission Status : Decommission in progress的状态。

    等待数据迁移完成之后,该状态变为Decommission Status : Decommissioned。

    在该节点上停止进程:

    hadoop-daemon.sh stop datanode

    删除slaves文件中的对应主机名即可。

    注意,副本数量要小于或者等于正常节点的数量,否则删除失败

    重新添加删除的节点

    在slaves文件添加对应主机名,删除datanode-deny.list对应的主机名

    执行命令:

    hdfs dfsadmin -refreshNodes

    在该节点上启动进程:

    hadoop-daemon.sh start datanode

    添加新节点

    新机器配置完之后,slave和datanode-allow.list文件加入该主机名。

    该节点上启动进程:

    hadoop-daemon.sh start datanode

  • 相关阅读:
    Martix工作室考核题 —— 打印一个菱形
    Martix工作室考核题 —— 打印一个菱形
    Martix工作室考核题 —— 打印九九乘法表
    Martix工作室考核题 —— 打印九九乘法表
    Martix工作室考核题 —— 打印九九乘法表
    Martix工作室考核题 —— 201938 第三题
    Martix工作室考核题 —— 201938 第三题
    Martix工作室考核题 —— 201938 第三题
    Martix工作室考核题 —— 201938 第一题
    fiddler模拟发送post请求
  • 原文地址:https://www.cnblogs.com/wt11/p/6728131.html
Copyright © 2011-2022 走看看