Mac做java开发(五):​hadoop的几个简单操作

2019-08-08 15:38:03 浏览数 (1)

今天,对hadoop分布式环境进行一些基本操作练习。

1,文件操作:

代码语言:javascript复制
// 上传文件到hdfs
hdfs dfs -mkdir -p /user/hadoop
cd ~
touch test001.java
hdfs dfs -put test001.java

// 从hdfs下载文件
hdfs dfs -ls /user/hadoop
hdfs dfs -get test002.java

// 查看文件
hdfs dfs -cat test.py

// 删除文件
hdfs dfs -rm test.py
hdfs dfs -ls

2,运行Hadoop示例程序:

代码语言:javascript复制
hdfs dfs -mkdir test

hdfs dfs -put ${HADOOP_HOME}/etc/hadoop/core-site.xml test/core-site.xml

hdfs dfs -ls test

hadoop jar ${HADOOP_HOME}/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.2.jar wordcount test/core-site.xml test/output
 
// 查看运行结果:
hdfs dfs -cat test/output/part-r-00000

3,hadoop理解:

•资源:在 YARN 的语境下,资源特指计算资源,包括CPU 和内存。计算机的每个进程都会占用一定的CPU 和内存,任务需要先向RM 申请到资源后才能获准在NM 上启动自己的进程。

•队列:YARN 将整个集群的资源划分为队列,每个用户的任务必须提交到指定队列。同时限制每个队列的大小,防止某个用户的任务占用整个集群,影响了其他用户的使用。

•Vcore& Mem:逻辑 CPU 和逻辑内存,每个NM 会向 RM汇报自己有多少 vcore和内存可用,具体数值由集群管理员配置。比如一台48核,128G内存的机器,可以配置40vcore,120G内存,意为可以对外提供这么多资源。具体数值可能根据实际情况有所调整。每个NM 的逻辑资源加起来,就是整个集群的总资源量。

•MinResources& MaxResources:为了使每个队列都能得到一定的资源,同时又不浪费集群的空闲资源,队列的资源设置都是“弹性”的。每个队列都有min 和 max两个资源值,min 表示只要需求能达到,集群一定会提供这么多资源;如果资源需求超过了min 值而同时集群仍有空闲资源,则仍然可以满足;但又限制了资源不能无限申请以免影响其他任务,资源的分配不会超过max 值。

•Container:任务申请到资源后在NM 上启动的进程统称Container。比如在MapReduce 中可以是Mapper 或Reducer,在Spark 中可以是 Driver或 Executor。

0 人点赞