一、Linux基本操作
1、文件、目录操作
(1)创建目录、重命名目录、删除目录
mkdir tools //在当前目录下创建一个名为tools的目录
mkdir /bin/tools //在指定目录下创建一个名为tools的目录
mv 当前目录名 新目录名 //修改目录名,同样适用与文件操作
mv /usr/tmp/tool /opt //将/usr/tmp目录下的tool目录剪切到 /opt目录下面
mv -r /usr/tmp/tool /opt //递归剪切目录中所有文件和文件夹
rm 文件名 //删除当前目录下的文件
rm -f 文件名 //删除当前目录的的文件(不询问)
rm -r 文件夹名 //递归删除当前目录下此名的目录
rm -rf 文件夹名 //递归删除当前目录下此名的目录(不询问)
rm -rf * //将当前目录下的所有目录和文件全部删除
rm -rf /* //将根目录下的所有文件全部删除【慎用!相当于格式化系统】
(2)复制文件、重命名文件、移动文件、删除文件
cp [选项] 源文件 目标文件
cp /home/downloads/xampp-linux-x64-7.3.6-0-installer.run /opt/
#拷贝目录
cp /usr/tmp/tool /opt //将/usr/tmp目录下的tool目录复制到 /opt目录下面
cp -r /usr/tmp/tool /opt //递归剪复制目录中所有文件和文件夹
mv a.txt aa.txt //把文件a.txt移动到当前目录下并改名为aa.txt
mv /tmp/a.txt aaa.txt //把/tmp目录下的a.txt文件移动到当前目录下并改名为aaa.txt
mv move [移动 改名]
mv a.txt /tmp //把文件a.txt移动到/tmp 目录下
rm 文件名 //删除当前目录下的文件
rm -f 文件名 //删除当前目录的的文件(不询问)
(3)切换工作目录
cd / //切换到根目录
cd /bin //切换到根目录下的bin目录
cd ../ //切换到上一级目录 或者使用命令:cd ..
cd ~ //切换到home目录
cd - //切换到上次访问的目录
cd xx(文件夹名) //切换到本目录下的名为xx的文件目录,如果目录不存在报错
cd /xxx/xx/x //可以输入完整的路径,直接切换到目标目录,输入过程中可以使用tab键快速补全
(4)查看文件内容
ls //查看当前目录下的所有目录和文件
ls -a //查看当前目录下的所有目录和文件(包括隐藏的文件)
ls -l //列表查看当前目录下的所有目录和文件(列表查看,显示更多信息),与命令"ll"效果一样
ls /bin //查看指定目录下的所有目录和文件
(5)查看进程
ps -ef //查看所有正在运行的进程
jps
(6)测试两台主机是否连通
ping
2、vi编辑器
vi 文件名 //打开需要编辑的文件
--进入后,操作界面有三种模式:命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode)
命令模式
-刚进入文件就是命令模式,通过方向键控制光标位置,
-使用命令"dd"删除当前整行
-使用命令"/字段"进行查找
-按"i"在光标所在字符前开始插入
-按"a"在光标所在字符后开始插入
-按"o"在光标所在行的下面另起一新行插入
-按":"进入底行模式
插入模式
-此时可以对文件内容进行编辑,左下角会显示 "-- 插入 --""
-按"ESC"进入底行模式
底行模式
-退出编辑: :q
-强制退出: :q!
-保存并退出: :wq
操作步骤示例
1.保存文件:按"ESC" -> 输入":" -> 输入"wq",回车 //保存并退出编辑
2.取消操作:按"ESC" -> 输入":" -> 输入"q!",回车 //撤销本次修改并退出编辑
补充
vim +10 filename.txt //打开文件并跳到第10行
vim -R /etc/passwd //以只读模式打开文件
二、Hadoop集群操作
1、启动、停止Hadoop服务
/usr/local/hadoop-3.1.0/sbin/start-all.sh
2、查看Hadoop Web管理界面
:50070
三、Spark集群操作
1、启动、停止Spark服务
/usr/local/spark-3.3.0-bin-hadoop3/sbin/start-all.sh
2、查看Spark Web管理界面
:8080
打开spark-shell
/usr/local/spark-3.3.0-bin-hadoop3/bin/spark-shell
四、RDD
1、打开本地文件方式创建RDD对象
sc.textFile("file:///usr/local/words.txt")
从 HDFS 加载数据创建 RDD
sc.textFile("/words.txt")
2、转换算子
(1)筛选(filter)
val rdd1 = rdd0.filter(line=>line.contains("spark"))
(2)映射(map、flatMap)
val rdd1 = rdd0.map(line=>line.split(" "))
val rdd1 = rdd0.flatMap(line=>line.split(" ")):先执行 rdd0.map(line=>line.split(" "))映射操作,得到 RDD[Array[String]],再执行 flat()扁平化操作,得到 RDD[String]
(3)分组(groupByKey)
切分、映射后扁平化。
val rdd1 = rdd0.flatMap(line=>line.split(" ")).map(word=>(word,1))
返回分组后新的键值对。
val rdd2 = rdd1.groupByKey()
(4)聚合运算(reduceByKey)
切分、映射后扁平化。
val rdd1 = rdd0.flatMap(line=>line.split(" ")).map(word=>(word,1))
返回分组后新的键值对。
val rdd2 = rdd1.reduceByKey((a,b)=>a+b)
3、行动算子
(1)返回元素的个数(count)
rdd0.count()
(2)返回第一个元素(first)
rdd0.first()
(3)返回前n个元素(take)
rdd0.take(3)
(4)以数组形式返回所有元素(collect)
rdd0.collect()
(5)将数据集中的每个元素传递到 func 函数中运行(foreach)
rdd0.foreach(x=>println(x))
(6)通过 func 函数(两个输入参数,一个返回值)聚合数据集中的元素(reduce)
val rdd0 = sc.parallelize(Array(1, 2, 3, 4, 5))
rdd0.reduce((a,b)=>a+b)
4、使用scala编写词频统计程序
package org.example
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
//本地模式执行单词记数程序
object WordCount {
def main(args: Array[String]):Unit = {
//(1)创建 SparkConf 对象,设置 appName 和 Master 地址
val sparkConf = new
SparkConf().setAppName("WordCount").setMaster("local[2]")
//(2)创建 SparkContext 对象,它是所有任务计算的源头
val sparkContext = new SparkContext(sparkConf)
//(3)读取数据文件到 String 类型的集合中
val data: RDD[String] = sparkContext.textFile("D:\news.txt")
//(4)切分每一行(以空格作为分隔符),获取所有的单词
var words: RDD[String] = data.flatMap(.split(" "))
//(5)每个单词记为 1,转换为(单词,1)
val wordAndOne: RDD[(String, Int)] = words.map(x=>(x, 1))
//(6)相同单词汇总,前一个下划线表示累加数据,后一个下划线表示新数据
val result:RDD[(String, Int)] = wordAndOne.reduceByKey(+_)
//收集打印结果数据
val finalResult: Array[(String, Int)] = result.collect()
//按第 2 列降序排序,第 1 列升序排序的规则输出所有元素
finalResult.sortBy(r=>(r._2, r._1))(Ordering.Tuple2(Ordering.Int.reverse,
Ordering.String)).foreach(x=>println(x))
//(8)关闭 sparkContext 对象
sparkContext.stop()
}
}
通过并行集合创建 RDD
(1)定义数组
val array=Array(1,2,3,4,5)
(2)调用 parallelize()方法创建 RDD
val arrRDD=sc.parallelize(array)
五、SQL操作 打开hadoop、spark
1、RDD对象转换为DataFrame对象
(一)创建 DataFrame
(1)通过 txt 格式文件创建 DataFrame 对象。
val df = spark.read.text("file:///usr/local/person.txt")
(2)打印 DataFrame 对象的 Schema 元数据信息。
df.printSchema()
(3)查看 DataFrame 对象的结果数据。
df.show()
(二)RDD 转换 DataFrame
(1)加载数据,创建 rdd0 对象。
val rdd0 = sc.textFile("/person.txt").map(_.split(" "))
(2)定义 Person 样例类,相当于表的 Schema 元数据信息。
case class Person(id:Int, name:String, age:Int)
(3)使 rdd0 中的数组数据与 Person 样例类关联,将 RDD[Array[String]]更改为 RDD[Person]。
val rdd1 = rdd0.map(x=>Person(x(0).toInt, x(1), x(2).toInt))
(4)将 RDD 对象 rdd1 转换成 DataFrame 对象 df。
val df = rdd1.toDF()
(5)查看 df 对象的结果数据。
df.show()
(6)查看 DataFrame 对象 df 的 Schema 元数据信息。
df.printSchema()
2、查看指定列的数据
df.select(df.col("name"), df.col("age")).show()
3、根据条件过滤指定行的数据
df.filter(df("age") >= 25).select(df.col("name"), df.col("age")).show()
4、使用别名
df.select(df("name").as("Name"), df("age").as("Age")).show()
上传文件到 HDFS 指定目录(如“/”)。
hdfs dfs -put /usr/local/person.txt /
查看 HDFS 文件内容。
hdfs dfs -cat /person.txt
六、Scala编程
1、使用数组或集合存储批量数据
// 使用数组存储批量数据
val arrayData = Array(1, 2, 3, 4, 5)
// 使用列表存储批量数据
val listData = List(1, 2, 3, 4, 5)
// 使用集合存储批量数据
val setData = Set(1, 2, 3, 4, 5)
// 使用映射存储批量数据
val mapData = Map("a" -> 1, "b" -> 2, "c" -> 3)
2、修改其中某个数据
// 修改数组中的数据
arrayData(2) = 10
// 修改列表中的数据
val updatedListData = listData.updated(2, 10)
// 修改集合中的数据(集合是不可变的,需要创建新的集合)
val updatedSetData = setData - 3 + 10
// 修改映射中的数据
val updatedMapData = mapData + ("c" -> 10)
3、判断某个数据是否存在
// 判断数组中是否存在某个数据
val existsInArray = arrayData.contains(3)
// 判断列表中是否存在某个数据
val existsInList = listData.contains(3)
// 判断集合中是否存在某个数据
val existsInSet = setData.contains(3)
// 判断映射中是否存在某个键
val existsInMap = mapData.contains("c")
4、输出所有数据
// 输出数组中的所有数据
println(arrayData.mkString(", "))
// 输出列表中的所有数据
println(listData.mkString(", "))
// 输出集合中的所有数据
println(setData.mkString(", "))
// 输出映射中的所有数据
println(mapData.mkString(", "))
七、HBase
(1)在 hadoop01、hadoop02、hadoop03 上分别执行 zkServer.sh start 命令,启动 Zookeeper 集群。
/usr/local/zookeeper-3.3.3/bin/zkServer.sh start
(2)在 hadoop01 上执行 start-dfs.sh 命令,启动 Hadoop 集群的 HDFS。
/usr/local/hadoop-3.1.0/sbin/start-dfs.sh
(3)在 hadoop01 上执行 start-hbase.sh 命令,启动 HBase 集群。
/usr/local/hbase-2.4.12/bin/start-hbase.sh
启动 HBase Shell
/usr/local/hbase-2.4.12/bin/hbase shell
1、创建表:create ’表名’, ’列簇’
【例】创建名称为 student、列簇名为 info 的 HBase 表。
create ’student’, ’info’
查看数据库中折数据表。
list
2、插入数据:put ’表名’, ’行键’, ’列簇:列名’, ’值’
【例】向 student 表中插入 5 条数据。
put 'student', '1001', 'info:sex', 'male'
put 'student', '1001', 'info:age', '18'
put 'student', '1002', 'info:name', 'Janna'
put 'student', '1002', 'info:sex', 'female'
put 'student', '1002', 'info:age', '20'
3、扫描数据:scan ’表名’
【例】扫描 student 表中的所有数据。
scan'student'
4、查看表结构:describe ’表名’
【例】扫描 student 表中的所有数据。
describe 'student'
5、更新数据:put ’表名’, ’行键’, ’列簇:列名’, ’新值’
【例】将 student 表中行键为“1001”的记录的列名“info:age”的值更新为 22。
put 'student', '1001', 'info:age', '22'
执行成功后扫描 student 表中的所有数据。
scan 'student'
6、获取指定字段的数据:get ’表名’, ’行键’[, ’列簇:列名’]
【例】获取 student 表中行键为“1001”的数据。
get 'student', '1001'
【例】获取 student 表中行键为“1002”、列名为“info:name”的数据。
get 'student', '1002', 'info:name'
7、统计行数:count ’表名’
【例】统计 student 表中数据的行数。
count 'student'
8、 删除指定行或列的数据:delete ’表名’, ’行键’, ’列簇:列名’
【例】删除 student 表中行键为“1002”、列名为“info:sex”的数据。
delete 'student', '1002', 'info:sex'
执行成功后扫描 student 表中的所有数据。
scan 'student'
9、删除整个行或列的数据:deleteall ’表名’, ’行键’
【例】删除 student 表中行键为“1001”的数据。
deleteall 'student', '1001'
执行成功后扫描 student 表中的所有数据。
scan 'student'
10、 清空整个表的数据:truncated ’表名’
【例】删除 student 表的所有数据。
truncate 'student'
执行成功后扫描 student 表中的所有数据。
scan 'student'
11、删除表:disable ’表名’
drop ’表名’
【例】删除 student 表。
disable 'student'
drop 'student'
查看数据库中折数据表。
list
版权归原作者 别惹小娘子 所有, 如有侵权,请联系我们删除。