将hadoop上的文件hello.txt从HDFS复制到本地/usr/local目录

时间: 2024-10-13 08:06:14 浏览: 19
在Hadoop上将HDFS上的文件`hello.txt`复制到本地`/usr/local`目录,可以使用Hadoop的命令行工具`hdfs`或者`hadoop fs`来操作。以下是步骤: 1. **使用hdfs命令**: - 首先,你需要通过SSH连接到集群中的一台NameNode节点。然后在终端中运行以下命令: ``` hdfs dfs -get /path/to/hello.txt /usr/local ``` 这里 `/path/to/hello.txt` 是`hello.txt`在HDFS中的完整路径,`/usr/local`是你想要保存的本地路径。 2. **使用hadoop fs命令**: - 如果你正在Linux环境下,并且已经配置了环境变量`HADOOP_HOME`,可以在shell中输入: ```bash hadoop fs -get /path/to/hello.txt /usr/local ``` 同样的,替换路径和目的地。 记得确保在执行上述操作前,你有权限读取HDFS文件并写入本地目录。
相关问题

在ubuntu上搭建hadoop平台完成分布式存储

搭建Hadoop平台需要以下步骤: 1. 安装Java:Hadoop是用Java编写的,因此需要先安装Java运行环境。在Ubuntu上,可以使用以下命令安装OpenJDK 8: ``` sudo apt-get update sudo apt-get install openjdk-8-jdk ``` 2. 下载和解压Hadoop:从Apache Hadoop官网上下载最新版本的Hadoop,并将其解压到目标文件夹中。可以使用以下命令下载和解压Hadoop: ``` wget https://downloads.apache.org/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz tar -xzvf hadoop-3.3.1.tar.gz mv hadoop-3.3.1 /usr/local/hadoop ``` 3. 配置Hadoop环境变量:在~/.bashrc文件中添加以下内容: ``` export HADOOP_HOME=/usr/local/hadoop export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin ``` 然后运行以下命令使其生效: ``` source ~/.bashrc ``` 4. 配置Hadoop:在Hadoop的安装目录下,找到etc/hadoop/core-site.xml文件和etc/hadoop/hdfs-site.xml文件,并分别进行如下配置: core-site.xml: ``` <configuration> <property> <name>fs.defaultFS</name> <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>/usr/local/hadoop/hadoop_data/hdfs/namenode</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/usr/local/hadoop/hadoop_data/hdfs/datanode</value> </property> </configuration> ``` 这里将Hadoop的数据存储在了/usr/local/hadoop/hadoop_data目录下,可以根据自己的需要进行修改。 5. 格式化Hadoop:在Hadoop的安装目录下,运行以下命令: ``` hdfs namenode -format ``` 6. 启动Hadoop:在Hadoop的安装目录下,运行以下命令: ``` start-all.sh ``` 这将启动Hadoop的所有服务,包括NameNode、DataNode、ResourceManager和NodeManager。可以使用以下命令查看Hadoop的状态: ``` jps ``` 如果看到以下进程,则说明Hadoop启动成功: ``` NameNode DataNode ResourceManager NodeManager Jps ``` 7. 测试Hadoop:可以使用以下命令创建一个文件,并将其上传到Hadoop中: ``` echo "hello world" > test.txt hdfs dfs -mkdir /test hdfs dfs -put test.txt /test ``` 然后使用以下命令查看该文件: ``` hdfs dfs -cat /test/test.txt ``` 如果看到输出“hello world”,则说明Hadoop已经正常工作。 以上步骤完成后,就可以在Ubuntu上搭建Hadoop平台完成分布式存储。

hadoop伪分布式搭建

伪分布式搭建 Hadoop 可以在一台机器上运行 Hadoop,但是每个组件都运行在不同的端口上,以模拟一个多节点的分布式环境。下面是伪分布式 Hadoop 的搭建步骤: 1. 安装 Java Hadoop 是用 Java 编写的,需要先安装 Java。可以通过命令 `java -version` 查看是否已经安装 Java。如果没有,可以通过以下命令安装: ``` sudo apt-get update sudo apt-get install openjdk-8-jdk ``` 2. 安装 Hadoop 下载 Hadoop 并解压缩: ``` wget https://downloads.apache.org/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz tar -xzvf hadoop-3.3.1.tar.gz ``` 将 Hadoop 移动到 `/usr/local` 目录下: ``` sudo mv hadoop-3.3.1 /usr/local/hadoop ``` 3. 配置 Hadoop 进入 Hadoop 的配置目录: ``` cd /usr/local/hadoop/etc/hadoop ``` 配置 Hadoop 的环境变量,在 `hadoop-env.sh` 文件中添加以下代码: ``` export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 export HADOOP_HOME=/usr/local/hadoop export PATH=$PATH:$HADOOP_HOME/bin ``` 配置 Hadoop 的核心配置文件 `core-site.xml`,在 `configuration` 标签中添加以下内容: ``` <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> ``` 配置 Hadoop 的 HDFS 文件系统,创建 `hdfs-site.xml` 文件并添加以下内容: ``` <property> <name>dfs.replication</name> <value>1</value> </property> ``` 配置 Hadoop 的 YARN 资源管理系统,创建 `yarn-site.xml` 文件并添加以下内容: ``` <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> ``` 配置 Hadoop 的 MapReduce 分布式计算框架,创建 `mapred-site.xml` 文件并添加以下内容: ``` <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> ``` 4. 启动 Hadoop 格式化 HDFS 文件系统: ``` hdfs namenode -format ``` 启动 Hadoop: ``` start-all.sh ``` 查看 Hadoop 是否成功启动: ``` jps ``` 如果成功启动,会看到以下进程: ``` 2325 Jps 2114 ResourceManager 1937 DataNode 2022 NodeManager 1825 NameNode 2185 JobHistoryServer ``` 现在,就可以通过浏览器访问 Hadoop 的 Web 界面了,地址为 `http://localhost:9870`。 5. 执行 MapReduce 任务 在 Hadoop 的安装目录下创建一个输入文件: ``` echo "Hello World" > input.txt ``` 将该文件上传到 HDFS 文件系统中: ``` hdfs dfs -put input.txt /input ``` 在 Hadoop 的安装目录下创建一个 MapReduce 程序: ``` mkdir wordcount cd wordcount ``` 创建一个名为 `WordCount.java` 的文件,并添加以下代码: ```java import java.io.IOException; import java.util.StringTokenizer; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.Mapper; import org.apache.hadoop.mapreduce.Reducer; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; public class WordCount { public static class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable>{ private final static IntWritable one = new IntWritable(1); private Text word = new Text(); public void map(Object key, Text value, Context context ) throws IOException, InterruptedException { StringTokenizer itr = new StringTokenizer(value.toString()); while (itr.hasMoreTokens()) { word.set(itr.nextToken()); context.write(word, one); } } } public static class IntSumReducer extends Reducer<Text,IntWritable,Text,IntWritable> { private IntWritable result = new IntWritable(); public void reduce(Text key, Iterable<IntWritable> values, Context context ) throws IOException, InterruptedException { int sum = 0; for (IntWritable val : values) { sum += val.get(); } result.set(sum); context.write(key, result); } } public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); Job job = Job.getInstance(conf, "word count"); job.setJarByClass(WordCount.class); job.setMapperClass(TokenizerMapper.class); job.setCombinerClass(IntSumReducer.class); job.setReducerClass(IntSumReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); FileInputFormat.addInputPath(job, new Path("hdfs://localhost:9000/input/")); FileOutputFormat.setOutputPath(job, new Path("hdfs://localhost:9000/output/")); System.exit(job.waitForCompletion(true) ? 0 : 1); } } ``` 编译这个程序: ``` export HADOOP_CLASSPATH=$(hadoop classpath) javac -classpath ${HADOOP_CLASSPATH} -d . WordCount.java ``` 打包这个程序: ``` jar cf wc.jar WordCount*.class ``` 执行这个程序: ``` hadoop jar wc.jar WordCount /input /output ``` 查看输出结果: ``` hdfs dfs -cat /output/* ``` 以上就是伪分布式 Hadoop 的搭建和运行 MapReduce 任务的步骤。
阅读全文

相关推荐