zoukankan      html  css  js  c++  java
  • Hadoop的安装与配置

    一、准备环境:

    系统:centos6.5 64位

    192.168.1.61   master

    192.168.1.5     slave

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

    在192.168.1.61 上

    vim /etc/hosts最后添加

    192.168.1.61  master
    192.168.1.5    slave

    在192.168.1.5 上

    vim /etc/hosts最后添加

    192.168.1.61  master
    192.168.1.5    slave
    

    重要:无论master还是slave都不要在该文件的127.0.0.1后面填写 master 或者 slave

    当然两台机器都要修改hostname

    接下来修改master和slave1 的配置文件

    vim  /etc/ssh/sshd_config

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

    RSAAuthentication  yes

    PubkeyAuthentication yes

    AuthorizedKeysFile  .ssh/authorized_keys

    PasswordAuthentication yes

    PeimitEmptyPasswords yes

     

    修改后重启sshd服务,执行 service sshd restart

    到这里免密码登陆的准备工作做完了,接下来是真正的做了:

    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.1.5的远程机上:

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

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

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

    ssh-add  /root/.ssh/id_rsa

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

    8. 在本地主机上输入:

    ssh slave(回车)

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

    到这里从master到slave的免密码登陆就做好了;对于slave到master的免密码登陆其实都是一样的只是某些东西变化一下,这里不做详细的叙说。

    三、hadoop 的配置

    到了这里就是重头戏了,前面的一切都是为这里做铺垫。

    首先在master上进行操作:

    1、官网下载Hadoop 

    hadoop-2.7.3.tar.gz

    我这里有一份从官网下载好的(在X国从hadoop官网下载速度好慢的,原因都懂。。。),这里是百度云盘分享:http://pan.baidu.com/s/1hsNzzUW

    我下载的这个包是无需进行编译安装的,解压后配置一下就可以用。

    2.安装rsyncJdk1.8

    我配置的是163的开源 ,从163下载XXX.repo文件放在该放的repo目录下就可以用,在 /etc/yum.repos.d/ 目录下:

    执行:wget http://mirrors.163.com/.help/CentOS6-Base-163.repo

    配置好后,直接执行:

    yum install java-1.8.0-openjdk

    yum install java-1.8.0-openjdk-devel

    我这里的jdk安装后存放的目录是:

    /usr/lib/jvm/java-1.8.0-openjdk.x86_64

    这个目录后面配置hadoop时候有用

    这样jdk也配置完成了

    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)编辑hadoop-env.sh,找到相应位置修改如下:

    # The java implementation to use.
    #export JAVA_HOME=${JAVA_HOME}
    export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk.x86_64
    

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

    # some Java parameters
    # export JAVA_HOME=/home/y/libexec/jdk1.6.0/
    export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk.x86_64
    

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

    <configuration>
     <property>
      <name>fs.defaultFS</name>
       <value>hdfs://192.168.1.61:9000</value>#指定默认文件系统,不要写localhost,namenode与datanode使用9000端口进行通信
     </property>
     <property>
      <name>hadoop.tmp.dir</name>
       <value>/home/hadoop/hadoop-2.7.3/tmp/</value>#指定hadoop工作空间,也就是说master与slave的数据实际存放目录就是/home/hadoop/hadoop-2.7.3/tmp/
     </property>
    </configuration>
    

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

    <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>
        </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,加入slave的IP,我这里本机不作为datanode所以将默认其中的localhost去掉( 为了保证稳定,最好写ip,一般情况下写主机名也可以)

    192.168.1.5
    

     至此,master配置就完成了

    5.slave配置:

    (1)slave配置步骤与master的是“一模一样”的,连配置的内容都是“相同的”。

    (2)slave不配置/home/hadoop/hadoop-2.7.3/etc/hadoop/slaves文件,把该文件中的默认内容清空,让该文件为空即可。

    (3)配置完master与slave后,格式化hdfs系统

            关闭master与slave的防火墙与selinux

    service iptables stop
    
    setenforce 0
    

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

     vim  /etc/profile   在最后加入

    export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk.x86_64
    
    export HADOOP_HOME=/home/hadoop/hadoop-2.7.3
    
    export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    

     保存后记得用命令source /etc/profile配置立即生效

     然后执行 格式化在两台机器上都需要执行:(我不确定是否需要在两台机器上都执行,反正我都执行了,应该只是在namenode上执行的,不确定。。。)

    hadoop namenode -format
    

      会发现以前/home/hadoop/hadoop-2.7.3不存在tmp文件夹,现在已经有了

    然后启动HDFS  命令start-all.sh(关闭是stop-all.sh)

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

    master上面:

    [root@master current]# jps
    49971 ResourceManager
    49817 SecondaryNameNode
    70509 Jps
    49615 NameNode
    

    slave上面:

    [root@slave hadoop-2.7.3]# jps
    114897 NodeManager
    128657 Jps
    114770 DataNode
    

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

    master上:

    [root@master current]# netstat -tnlp
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
    tcp        0      0 192.168.1.61:9000           0.0.0.0:*                   LISTEN      49615/java          
    tcp        0      0 0.0.0.0:50090               0.0.0.0:*                   LISTEN      49817/java          
    tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      2037/rpcbind        
    tcp        0      0 0.0.0.0:50070               0.0.0.0:*                   LISTEN      49615/java          
    tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      63365/sshd          
    tcp        0      0 0.0.0.0:35126               0.0.0.0:*                   LISTEN      2094/rpc.statd      
    tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      2139/cupsd          
    tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      2579/master         
    tcp        0      0 ::ffff:192.168.1.61:8030    :::*                        LISTEN      49971/java          
    tcp        0      0 ::ffff:192.168.1.61:8032    :::*                        LISTEN      49971/java          
    tcp        0      0 ::ffff:192.168.1.61:8033    :::*                        LISTEN      49971/java          
    tcp        0      0 ::ffff:192.168.1.61:8035    :::*                        LISTEN      49971/java          
    tcp        0      0 :::52297                    :::*                        LISTEN      2094/rpc.statd      
    tcp        0      0 :::111                      :::*                        LISTEN      2037/rpcbind        
    tcp        0      0 :::22                       :::*                        LISTEN      63365/sshd          
    tcp        0      0 ::1:631                     :::*                        LISTEN      2139/cupsd          
    tcp        0      0 ::ffff:192.168.1.61:8088    :::*                        LISTEN      49971/java          
    tcp        0      0 ::1:25                      :::*                        LISTEN      2579/master  
    

    slave上:

    [root@slave hadoop-2.7.3]# netstat -tnlp
    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:50020               0.0.0.0:*                   LISTEN      114770/java         
    tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      1990/rpcbind        
    tcp        0      0 127.0.0.1:60369             0.0.0.0:*                   LISTEN      114770/java         
    tcp        0      0 192.168.122.1:53            0.0.0.0:*                   LISTEN      3006/dnsmasq        
    tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      44239/sshd          
    tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      2090/cupsd          
    tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      2746/master         
    tcp        0      0 0.0.0.0:50010               0.0.0.0:*                   LISTEN      114770/java         
    tcp        0      0 0.0.0.0:47194               0.0.0.0:*                   LISTEN      2047/rpc.statd      
    tcp        0      0 0.0.0.0:50075               0.0.0.0:*                   LISTEN      114770/java         
    tcp        0      0 :::8040                     :::*                        LISTEN      114897/java         
    tcp        0      0 :::8042                     :::*                        LISTEN      114897/java         
    tcp        0      0 :::3306                     :::*                        LISTEN      2555/mysqld         
    tcp        0      0 :::33807                    :::*                        LISTEN      2047/rpc.statd      
    tcp        0      0 :::111                      :::*                        LISTEN      1990/rpcbind        
    tcp        0      0 :::22                       :::*                        LISTEN      44239/sshd          
    tcp        0      0 ::1:631                     :::*                        LISTEN      2090/cupsd          
    tcp        0      0 ::1:25                      :::*                        LISTEN      2746/master         
    tcp        0      0 :::13562                    :::*                        LISTEN      114897/java         
    tcp        0      0 :::38395                    :::*                        LISTEN      114897/java  
    

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

    验证:

    可以查看 hadoop 相关信息的:http://192.168.1.61:50070/               这里是master的ip

    也在master上输入以下命令:

    [root@master hadoop]# hdfs dfsadmin -report
    Configured Capacity: 18645180416 (17.36 GB)
    Present Capacity: 9070198784 (8.45 GB)
    DFS Remaining: 9069195264 (8.45 GB)
    DFS Used: 1003520 (980 KB)
    DFS Used%: 0.01%
    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.1.5:50010 (slave)
    Hostname: slave
    Decommission Status : Normal
    Configured Capacity: 18645180416 (17.36 GB)
    DFS Used: 1003520 (980 KB)
    Non DFS Used: 9574981632 (8.92 GB)
    DFS Remaining: 9069195264 (8.45 GB)
    DFS Used%: 0.01%
    DFS Remaining%: 48.64%
    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 May 03 17:32:37 PDT 2017
    

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

    测试存放文件

    在master上执行以下命令,将文件nginx-1.4.7.tar.gz放到hdfs中:

    hdfs dfs -put nginx-1.4.7.tar.gz hdfs://192.168.1.61:9000/
    

    或者执行:

    hdfs dfs -put nginx-1.4.7.tar.gz /
    

    或者执行:

    hadoop fs -put nginx-1.4.7.tar.gz /
    

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

    执行完成后,可以执行:

    [root@slave hadoop-2.7.3]# hdfs dfs -ls hdfs://192.168.1.61:9000/
    Found 1 items
    -rw-r--r--   1 root supergroup     769153 2017-05-02 18:19 hdfs://192.168.1.61:9000/nginx-1.4.7.tar.gz
    

    可以看到上面已经存放好文件了,总之有很多的方法。

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

    在slave上执行:

    [root@slave current]# ll /home/hadoop/hadoop-2.7.3/tmp/dfs/data/current
    total 8
    drwx------. 4 root root 4096 May  2 17:46 BP-1625492901-127.0.0.1-1493770785307
    -rw-r--r--. 1 root root  229 May  2 17:46 VERSION
    

    可以对BP-1625492901-127.0.0.1-1493770785307进行 解压

    执行  tar -xvf BP-1625492901-127.0.0.1-1493770785307

    发现解压后的文件还是nginx-1.4.7

    hadoop还有一个特性,就是文件超过一定大小时候,会进行分片存放,这里我没有详细研究。

    到这里一个最最最基本的hadoop就出来了。

  • 相关阅读:
    node 日志 log4js 错误日志记录
    使用sync 修饰符------子组件内部可以修改props
    rem是怎么计算的
    你真的了解word-wrap和word-break的区别吗? (转载)
    vue-router学习笔记
    vue学习笔记
    es6学习笔记
    vue中在页面渲染完之后获取元素(否则动态渲染的元素获取不到)
    flex布局居中无效果注意是否设置了宽度
    有关vuex的问题
  • 原文地址:https://www.cnblogs.com/hjc4025/p/6801673.html
Copyright © 2011-2022 走看看