centos7 Hadoop单节点版本安装并使用Java程序连接hdfs

安装环境为虚拟机centos7,打算在windows的java程序上调用Linux的Hadoop的hdfs。

首先官网 http://hadoop.apache.org/ 下载安装包,解压重命名为hadoop文件夹,将文件夹移动到安装路径:
/opt/module/hadoop

配置环境变量:
在/etc/profile中加入

#hadoop
export HADOOP_HOME=/opt/module/hadoop/
export PATH=$HADOOP_HOME/bin:$PATH

查看版本:

hadoop version

配置文件:

core-site.xml

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <!--此处ip需要修改为虚拟机的IP,不是localhost,否则Java程序ping不到9000-->
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

hdfs-site.xml

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/app/data/hadoop/namenode</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/app/data/hadoop/datanode</value>
    </property>
</configuration>

mapred-site.xml

<configuration>
     <property>
          <name>mapreduce.framework.name</name>
          <value>yarn</value>
     </property>
</configuration>

yarn-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->
      <property>
          <name>yarn.nodemanager.aux-services</name>
          <value>mapreduce_shuffle</value>
      </property>
      <property>
          <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
          <value>org.apache.hadoop.mapred.ShuffleHandler</value>
      </property>
</configuration>

在指定的路径下创建三个文件夹:datanode,namenode,tmp

设置Hadoop密码,这里设置免密登录:
ssh-keygen -t rsa
生成新密钥

cd ~/.ssh/
cat id_rsa.pub >> authorized_keys
追加公钥到公共文件
ssh localhost
验证登录

验证登录成功后,可以启动Hadoop

在hadoop/sbin/下,运行start-all.sh

jps验证是否启动

win浏览器访问虚拟机ip下端口50070

命令行查询:hadoop fs -ls /

上传文件:hadoop fs -put test.txt

文件存放位置:上述xml中配置的路径下current/查看

文件下载:hadoop fs -get /test.txt

创建文件夹:hadoop fs -mkdir -p /wordcount/input

java 连接Hadoop:

需要引入依赖

<dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>2.7.7</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-client</artifactId>
            <version>2.7.7</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-hdfs</artifactId>
            <version>2.7.7</version>
        </dependency>

以上依赖用于操作hdfs

操作工具类:

private static final String HDFS_URI = "hdfs://192.168.78.102:9000/";
    private static final String USER = "root";
System.setProperty("hadoop.home.dir", "D:\\hdfs\\");
        Configuration conf = new Configuration();
        conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");
fileSystem = FileSystem.get(new URI(HDFS_URI), conf, USER);

通过以下方法可实现文件上传下载

fileSystem.open
fileSystem.create
fileSystem.copyFromLocalFile

排坑:
1.报错winutils.exe不存在
解决方案:官方包下载后解压找到这个文件,随意新建一个文件夹并在该文件夹下创建bin目录,该文件放置在bin下,System.setProperty(“hadoop.home.dir”, “该文件夹路径(不含bin)”);
例如 D:\hdfs\bin\winutils.exe 设置hadoop.home.dir时候就写D:\hdfs\
这个错误在windows下会出现

2.报错连接失败
检查core-site.xml中的路径,如果在虚拟机或远程服务器上,地址不能写localhost,要写真实的ip

3.理论上讲该教程可用于win安装,但是Hadoop中的yarn与nodejs中的yarn冲突,放弃尝试了。windows安装需要修改配置文件中的ip为本地路径。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值