(一)HDFS的基本操作
1.HDFS的相关命令
-mkdir 在HDFS创建目录 hdfs dfs -mkdir /data
-ls 查看当前目录 hdfs dfs -ls /
-ls -R 查看目录与子目录
-put 上传一个文件 hdfs dfs -put data.txt /data/input
-moveFromLocal 上传一个文件,会删除本地文件:ctrl + X
-copyFromLocal 上传一个文件,与put一样
-copyToLocal 下载文件 hdfs dfs -copyToLocal /data/input/data.txt
-get 下载文件 hdfs dfs -get /data/input/data.txt
-rm 删除文件 hdfs dfs -rm /data/input/data.txt
-getmerge 将目录所有的文件先合并,再下载
-cp 拷贝: hdfs dfs -cp /data/input/data.txt /data/input/data01.txt
-mv 移动: hdfs dfs -mv /data/input/data.txt /data/input/data02.txt
-count 统计目录下的文件个数
-text、-cat 查看文件的内容 hdfs dfs -cat /data/input/data.txt
-balancer 平衡操作
2.HDFS的Java API
(*)在HDFS上创建一个目录:
依赖的jar包:
/root/training/hadoop-2.7.3/share/hadoop/common/lib
/root/training/hadoop-2.7.3/share/hadoop/common/
/root/training/hadoop-2.7.3/share/hadoop/hdfs/lib
/root/training/hadoop-2.7.3//share/hadoop/hdfs/
(*)pom引入
对于Hadoop2.x.x版本,需要引入4个jar:
hadoop-common
hadoop-hdfs
hadoop-mapreduce-client-core
hadoop-client
pom
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-mapreduce-client-core</artifactId>
<version>2.7.3</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.7.3</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.7.3</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.7.3</version>
</dependency>
FileOPerationc.class
package hdfs;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class FileOperation {
public static void main(String[] args) throws Exception {
//使用HDFS的API创建目录
//设置NameNode地址
Configuration conf = new Configuration();
conf.set("fs.defaultFS","hdfs://172.22.128.81:9000");//"fs.defaultFS","hdfs://172.22.128.81:9000"是在core-site.xml中配置的
//得到hdfs的文件系统
FileSystem fileSystem = FileSystem.get(conf);
// fileSystem.mkdirs(new Path("/testFolder"));
fileSystem.delete(new Path("/testFolder"),true);
}
}
(二)spark
spark任务在集群中的调度过程
第一节:什么是Spark?Spark的特点和结构
1、什么是Spark?
Spark是一个针对大规模数据处理的快速通用引擎。
类似MapReduce,都进行数据的处理
2、Spark的特点:
(1)基于Scala语言、Spark基于内存的计算
(2)快:基于内存
(3)易用:支持Scala、Java、Python
(4)通用:Spark Core、Spark SQL、Spark Streaming
MLlib、Graphx
(5)兼容性:完全兼容Hadoop
3、Spark体系结构:主从结构
(1)主节点:Master
(2)从节点:Worker
第二节:搭建Spark的伪分布模式环境
1、解压:tar -zxvf spark-2.1.0-bin-hadoop2.4.tgz -C ~/training/
2、配置参数文件: conf/spark-env.sh
export JAVA_HOME=/root/training/jdk1.7.0_75
export SPARK_MASTER_HOST=192.168.88.11(也可替换成主机名bigdata11)
export SPARK_MASTER_PORT=7077
conf/slaves ----> 从节点的主机信息
localhost ---> 192.168.88.11(也可替换成主机名bigdata11)
3、启动Spark伪分布环境
sbin/start-all.sh
Spark Web Console: http://192.168.88.11:8080
4、命令行两节并执行
bin/spark-shell --master spark://192.168.88.11(或者是主机名bigdata11):7077
成功如图
test.txt
i love Beijing
Beijing is so beautiful
执行word Count Demo
sc.textFile("hdfs://192.168.88.11:9000/testdata/input/test.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect
运行结果如下
res1: Array[(String, Int)] = Array((is,1), (love,1), (Beijing,2), (so,1), (i,1), (beautiful,1))