我用linux搭建hadoop集群,在本地我用eclipse向节点上传文件 但是文件没有上传到hdfs节点上

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我用linux搭建hadoop集群,在本地我用eclipse向节点上传文件 但是文件没有上传到hdfs节点上相关的知识,希望对你有一定的参考价值。

在本地文件系统上创建了那个目录,这是怎么回事?用bin/hadoop fs -ls 查看也没有

参考技术A 在configuration后面一行加上conf.addResource(new Path("/home/yourname/hadoop/conf/core-site.xml"));这样就好了。 参考技术B 兄弟, hadoop的作用, 是做什么的啊, 我在网上找了资料,一直没有一找到合理的解释。你可以教我如何用hadoop吗?追问

我也是刚接触hadoop,在虚拟机上安装了。其实主要是hadoop的几个子项目,一个是hdfs,它是用于存储海量数据的一个分布式文件系统,存储数据基本在1TB以上。一个是mapreduce,它是一个处理海量数据的编程框架,根据你自己编写的map函数和reduce函数去处理海量数据的一个工具吧。还有一个就是hbase,相当于一个数据库。以上是我对hadoop的理解。具体应用我还在研究,刚接触不久。

参考技术C 很正常 上传失败呗追问

代码什么的都是正确的,这是什么原因?怎么解决这个问题呀?

追答

别光说呀 正常那怎么上传失败呢?

追问

上图吧,不然说不清楚,右边的代码功能:复制本地系统的test.txt文件到hdfs上去,原本代码执行完后左边的hdfs的root目录下应该出现test.txt文件的,但是没有出现。为什么?如何解决?

追答

你写错了 你的目标目录是file:///.. file:///表示的是本地文件系统 你压根就没往hdfs上上传 改成hdfs://master:9000/...

追问

谢谢你的指点,但是如果改成Path dst= new Path("hdfs://master:9000/tmp/test.txt");的话会报错,说没有这个路径。我修改了一下代码,没用那个Path=new Path(); 用了String,再用URI.create(dst)指定了目标路径为hdfs路径。可以上传上去了。
不过还是谢谢你,困扰了几天的问题终于解决了。

参考技术D 查看的路径不对,你直接 bin/hadoop fs -ls / 这样看下追问

这样看过了,还是没有。

追答

你把全部目录都找过了没有?

追问

上图吧,不然说不清楚,右边的代码功能:复制本地系统的test.txt文件到hdfs上去,原本代码执行完后左边的hdfs的root目录下应该出现test.txt文件的,但是没有出现。刷新了也没有。为什么?如何解决?

Hadoop最简单入门实战

一、部署Hadoop本地模式

  1. 搭建linux环境
    我用的centos7
  2. 在/opt目录下创建目录
mkdir module
  1. 安装jdk
  2. 下载hadoop https://hadoop.apache.org/releases.html 并解压到/opt/module目录
  3. 配置hadoop环境变量

vi /etc/profile

JAVA_HOME=/usr/local/jdk1.8.0_151
HADOOP_HOME=/opt/module/hadoop-2.10.0
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH:$HADOOP_HOME/bin
export JAVA_HOME CLASSPATH PATH

配置完毕,刷新

source /etc/profile

这就安装完毕了,简单吧。。。

二、运行Demo

  1. 建立一个测试用的输入文件

echo \'hadoop mapreduce hivehbase spark stormsqoop hadoop hivespark\' > data/wc.input

  1. 运行命令
    官方提供的计算单词数量的程序

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.10.0.jar wordcount ../data/wc.input output

  1. 运行完成后,会创建一个output目录,里面中有 _SUCCESS 文件说明 JOB 运行成功,part-r-00000 是输出结果文件。结果示例如下:

三、伪分布式部署

进入hadoop目录

cd /opt/module/hadoop-2.10.0/etc/hadoop

  1. 配置hadoop-env.sh
export JAVA_HOME=/usr/local/jdk1.8.0_151
  1. 配置core-site.xml
<configuration>
   <!-- 指定HDFS中namenode的路径  -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://eshop01:9000</value>
    </property>
   <!-- 指定HDFS运行时产生的文件的存储目录  -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/module/hadoop-2.10.0/data/tmp</value>
    </property>

</configuration>

  1. 配置hdfs-site.xml
<property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
  1. 启动集群
  • 格式化NameNode(第一次启动格式化)

bin/hdfs namenode -format

  • 启动namenode

sbin/hadoop-daemon.sh start namenode

  • 启动datanode

sbin/hadoop-daemon.sh start datanode

四、HDFS操作

  1. hdfs创建目录

bin/hdfs dfs -mkdir -p /usr/mmc

  1. 上传本地文件到hdfs

bin/hdfs dfs -put /opt/module/data/wc.input /usr/mmc

  1. 删除文件

bin/hdfs dfs -rm -r /usr/mmc

网页上查看效果:

五、启动YARN

  1. 配置yarn-env.sh

export JAVA_HOME=/usr/local/jdk1.8.0_151

  1. 配置yarn-site.xml
<configuration>

<!-- Site specific YARN configuration properties -->
<property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
</property>
<property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop101</value>
</property>

</configuration>


hadoop101那里要配置为你虚拟机的hostname

  1. 配置mapred-env.sh

export JAVA_HOME=/usr/local/jdk1.8.0_151

  1. 配置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>

  1. 启动yarn
 sbin/yarn-daemon.sh start resourcemanager
 sbin/yarn-daemon.sh start nodemanager
  1. 运行mapreduce程序
  • 先传一个文件到hdfs上
hdfs dfs -mkdir -p /usr/mmc/input
hdfs dfs -put ../data/wc.input /usr/mmc/input
  • 运行程序

注意:运行之前用jps查看下,这些都启动没有NameNode、NodeManager 、DataNode、ResourceManager

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.10.0.jar wordcount /usr/mmc/input /usr/mmc/output
  • 查看运行进度

http://192.168.1.21:8088/cluster

此时可以看到执行的进度了,但是那个History链接还是点不动,需要启动历史服务器

  1. 配置历史服务器
  • 打开mapred-site.xml
<configuration>
        <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
        </property>
        <property>
        <name>mapreduce.jobhistory.address</name>
        <value>eshop01:10020</value>
        </property>
        <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>eshop01:19888</value>
        </property>
</configuration>

  • 启动

sbin/mr-jobhistory-daemon.sh start historyserver

六、日志聚集

注意:开启日志聚集需要重启Nodemanager,resourcemanager,historymanager

  1. 配置yarn-site.xml,增加如下配置
<!--开启日志聚集功能  -->
<property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
</property>
<!-- 日志保留时间  -->
<property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>604800</value>
</property>

  1. 启动Nodemanager,resourcemanager,historymanager

  2. 运行实例程序

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.10.0.jar wordcount /usr/mmc/input /usr/mmc/output
  1. 查看log
    http://192.168.1.21:19888/jobhistory 点击指定job进去,点log

以上是关于我用linux搭建hadoop集群,在本地我用eclipse向节点上传文件 但是文件没有上传到hdfs节点上的主要内容,如果未能解决你的问题,请参考以下文章

阿里云ECS服务器部署HADOOP集群:Sqoop 安装

阿里云ECS服务器部署HADOOP集群:ZooKeeper 完全分布式集群搭建

阿里云ECS服务器部署HADOOP集群:HBase完全分布式集群搭建(使用外置ZooKeeper)

阿里云ECS服务器部署HADOOP集群:Hadoop完全分布式集群环境搭建

阿里云ECS服务器部署HADOOP集群:Flume 安装

阿里云ECS服务器部署HADOOP集群:Pig 安装