阿里云部署Hadoop伪分布

常见版本

不收费的Hadoop版本主要有三个(均是国外厂商),分别是:Apache(最原始的版本,所有发行版均基于这个版本进行改进)、Cloudera版本(Cloudera’s Distribution Including Apache Hadoop,简称CDH)、Hortonworks版本(Hortonworks Data Platform,简称“HDP”),对于国内而言,绝大多数选择CDH版本,本次也是用CDH进行演示。

安装步骤

  1. 第一步肯定是下载啦,这是下载地址,不过需要说明的是一定要下载对应版本的cdh,如果你hadoop下载的是cdh5.15.1,那么hbase也要下载这个版本,否则可能会有jar包冲突的问题。本次我们就是用5.15.1的版本。
    当然,你也完全可以直接用wget命令下载到服务器。

  2. 第二步就是上传到服务器,我是用FlieZilla,不会的小伙伴可以自行百度一下,然后解压,随你解压到哪里(命令参考:tar -zxvf hadoop-2.6.0-cdh5.15.1.tar.gz -C 指定路径)。

  3. 第三步就是添加HADOOP_HOME/bin到系统环境变量,这里有两种级别的:
    1)系统级:/etc/profile
    2)用户级:~/.bash_profile
    这里推荐用用户级别的,操作过程都是一样的:

    $ vim ~/.profile
    $ export HADOOP_HOME=你的解压路径
    $ source ~/.profile
    

    完成后,就可以直接用cd $HADOOP_HOME进入目录了
    在这里插入图片描述

  4. 修改Hadoop配置文件
    etc/hadoop/hadoop-env.sh

    #设置JAVA_HOME
    export JAVA_HOME=/data/jdk1.8.0_191  
    #重新指定 SSH 端口,由于公司禁止22端口,所以把端口改为了23559,一般不需要添加这个
    export HADOOP_SSH_OPTS="-p 23559"
    

    etc/hadoop/core-site.xml:

    <configuration>
        <property>
            #hdfs地址,hostname配置为阿里云内网地址,若配置为ip的话,在用java调用的时候会有问题
            <name>fs.defaultFS</name>
            <value>hdfs://hostname:9000</value>
        </property>
    </configuration>
    

    etc/hadoop/hdfs-site.xml:

    <configuration>
        <property>
        	#设置副本系数
            <name>dfs.replication</name>
            <value>1</value>
        </property>
    
    	<property>
        	#临时文件目录,重新制定位置,防止重启后数据丢失
            <name>hadoop.tmp.dir</name>
            <value>/data/hadoop-2.6.0-cdh5.15.1/tmp</value>
        </property>
    </configuration>
    
  5. 设置SSH免密码登录
    1)检查你当前是否可以用免密码登录

    $ ssh localhost
    

    2)如果不可以就要执行以下命令

    $ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
    $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    $ chmod 0600 ~/.ssh/authorized_keys
    

常见目录说明

  • bin:客户端命令包
  • etc/hadoop:配置文件包
  • sbin:服务器端命令包,启动相关进程脚本
  • share:常用例子

启动

第一次启动时需要执行一个格式化的命令

$ bin/hdfs namenode -format

启动命令

$ sbin/start-dfs.sh

完成后用 jps 查看是否启动成功,至此本地伪分布式部署就完成了。
在这里插入图片描述

踩坑

在用Java连接到HDFS的时候一直都连不上,后来看防火墙也没有开,阿里的安全组也设置了端口范围,最后发现是因为重启服务器的时候hadoop服务被关了。。。
所以可以先用

netstat -ltnp

检查一下端口是否启动了,然后看一下etc/hadoop/core-site.xml这个文件配置的地址是否为阿里内网的地址。
还有一点,在Java端上传文件的时候,总是报错,"File xxx could only be replicated to 0 nodes instead of minReplication (=1)."后来查了很多资料发现,因为阿里内外网的原因,NameNode返回的是内网ip,而客户端用内网ip肯定找不到这个DataNode,所以需要配置本地 hosts 文件为外网id,服务器 hosts 文件为内网ip,还需要在代码中配置一个属性configuration.set("dfs.client.use.datanode.hostname", "true");
这样就可以成功上传文件啦~
参考链接

你可能感兴趣的:(hadoop)