Linux报告笔记

一、初级部分

初级题目:

用shell 脚本监控系统的各项参数,包括操作系统版本、内核版本、主机名、登录用户、内存和磁盘使用情况等。并可以将脚本加入系统环境中,可以直接在终端里执行。

需求分析

Linux系统中,并没有直接直白的查看系统版本,内核版本,内存磁盘使用状态的方式。本次实验,我可以通过调用文件的方式,将当前的系统状态直接输出,达到监控系统状态的目的。同时将脚本加入环境中,可以在任何目录中输出状态,达到方便快捷的目的。

题目分析:

调用ubuntu系统的文件 输出ubuntu当前系统的各种状态。在shell脚本运行良好后,对环境变量path加入shell脚本所在的目录,以实现在终端内直接执行的功能。

关键调用命令:

uname -s:显示操作系统名称
uname -r:显示操作系统发行编号
uname -m:显示电脑类型
cat:连接文件并打印到屏幕上 此处用来显示文件内容 调取系统自带文件来输出信息
例:cat /proc/meminfo 输出内存使用状态

代码

#!/bin/bash
function get_system_version()
{
    echo "==================================="
    OS=`uname -s`
    REV=`uname -r`
    MACH=`uname -m`
    KERNEL=`uname -r`
        if [ -f /etc/SuSE-release ] ; then
            DIST=`cat /etc/SuSE-release | tr "\n" ' '| sed s/VERSION.*//`
            REV=`cat /etc/SuSE-release | tr "\n" ' ' | sed s/.*=\ //`
        elif [ -f /etc/mandrake-release ] ; then
            DIST='Mandrake'
            PSUEDONAME=`cat /etc/mandrake-release | sed s/.*\(// | sed s/\)//`
            REV=`cat /etc/mandrake-release | sed s/.*release\ // | sed s/\ .*//`
        elif [ -f /etc/os-release ]; then
            DIST=`awk -F "PRETTY_NAME=" '{print $2}' /etc/os-release | tr -d '\n"'`
        elif [ -f /etc/debian_version ] ; then
            DIST="Debian `cat /etc/debian_version`"
            REV=""

        fi
        if ${OSSTR} [ -f /etc/UnitedLinux-release ] ; then
            DIST="${DIST}[`cat /etc/UnitedLinux-release | tr "\n" ' ' | sed s/VERSION.*//`]"
        fi
        OSSTR="${OS} ${DIST} ${REV}(${PSUEDONAME} ${KERNEL} ${MACH})"
    echo "系统版本:${OSSTR}"

}


function get_kernel_version()
{
    echo "========================================"
    kernel_version=`uname -r`
    echo "内核版本:${kernel_version}"
}

function get_hostname()
{
    echo "========================================"
    echo "主机名:$HOSTNAME"
}
function get_login_users()
{
    echo "========================================"
    echo "登录用户信息"
    who -s
}

function get_mem_info()
{
    echo "========================================"
    echo "内存信息:"
	cat /proc/meminfo
    free -h| grep Mem
    free -h | grep Swap
}
function get_disk_info()
{
    echo "========================================"
    echo "存储状态:"
    df -h
}
function main()
{
    get_kernel_version
    get_system_version
    get_hostname
    get_login_users
    get_mem_info
    get_disk_info
}
main $@

代码编译后

使用 sudo vim /etc/profile 打开配置文件
在文件中加入
export PATH=$PATH:~/final
将我的综合设计的文件夹加入到path环境变量里,使在所有目录下运行bash命令时都会检查~/final文件夹。以此达到题目的要求。

运行结果

在这里插入图片描述
在这里插入图片描述

二、中级部分

题目

编写shell程序实现“学生信息管理”,包括查看、增加、删除、修改、统计等基本功能;

需求分析

在linux上,如果不能使用mysql一类的软件,就需要一个简单的文件信息管理系统,在本次实验中是管理学生的文件信息。实现查看、增加、删除、修改、统计等功能后,就可以对学生的学院,成绩,编号等信息进行简单管理。

题目分析

此题目比较寻常,目标是将学生信息加以保存到文件中,所以先设计数据保存形式,此处我们选择简单的使用txt文本保存。目录为/home/nevermore/final/level2save
在输入并保存数据后,进行数据的统计输出(我使用的是冒泡排序)。如此达到题目要求。

代码

#!/bin/bash
#!/bin/awk -f
#此处是保存数据的目录
StudentInfoPath="/home/nevermore/final/level2save/StudentInfo.txt"
CollegeInfoPath="/home/nevermore/final/level2save/CollegeInfo.txt"
GradeInfoPath="/home/nevermore/final/level2save/GradeInfo.txt" 

insert_college_info(){
 
	echo "请输入要加入的学院编号:"
		read collegeNo
		export existFlag=false
		while read line
			do
				lineCollegeNo=${line/,*/}
			if [ "$lineCollegeNo" = "$collegeNo" ];
			then {
				export existFlag=true
					break
			}
			fi
				done<$CollegeInfoPath
 
				if [ "$existFlag" == "true" ];
			then {
				export existFlag=false
				echo "已有此学院!,插入失败"
			}
				else {
					echo "请输入学院的名称: "
					read collegeName
					echo "$collegeNo,$collegeName" >> $CollegeInfoPath
					echo "学院记录插入成功,插入的记录为($collegeNo,$collegeName)"
				}	
			fi
}
del_student_info(){
	echo "请输入要删除的学生编号: "
		read studentNo
		export nowline=0;
	export delCount=0;
	while read line
		do
		export nowline=$(($nowline + 1))
		echo $line":"$nowline
		lineStudentNo=${line/,*/}
		if [ "$lineStudentNo" = "$studentNo" ];
		then {
			sed "/$lineStudentNo/d" $StudentInfoPath > $StudentInfoPath"_back"
				export delCount=$(($delCount + 1))
			mv $StudentInfoPath"_back" $StudentInfoPath
		}
		fi
			done<$StudentInfoPath
			echo "删除成功: 被删除学生编号$studentNo,删除个数为$delCount"
}
del_college_info(){
 
	echo "请输入要删除的学院编号: "
		read collegeNo
		export nowline=0;
		export delCount=0;
		while read line
			do 
				export nowline=$(($nowline + 1))
				nowCollegeNo=${line/,*/}
				if [ "$nowCollegeNo" = "$collegeNo" ];
				then {
					
					sed "/$line/d" $CollegeInfoPath > $CollegeInfoPath"_back"
					export delCount=$(($delCount + 1))
					mv $CollegeInfoPath"_back" $CollegeInfoPath
				}
					fi
				done<$CollegeInfoPath
		echo "删除学院成功:删除学院编号为$collegeNo,删除个数为$delCount"
}

insert_stugrade_info(){
	
	echo "请输入该成绩对应的学生编号: "
	read studentNo
	export existFlag=false
	export nowline=0;
	export stuName=""
	while read line
		do
			lineStudentNo=${line/,*/}
			nowline=$(($nowline + 1))
			if [ "$lineStudentNo" = "$studentNo" ];
			then {
				export existFlag=true
    #查找学生编号的话,提取该学生的姓名
				export stuName=`echo "$line"|awk -F',' '{print $2}'` 
				break
			}
			fi
		done<$StudentInfoPath
	if [ "$existFlag" = "false" ];
			then {
				echo "sorry,学生记录文件中不存在学生编号为$studentNo,插入失败"
			}
	else {
		export existFlag=false
		echo "请输入该成绩对应的科目名称: "
		read objectName
		echo "请输入该成绩的分数(0<=grade<=100): "
		read gradeResult
		if [ $gradeResult -le 100 ] && [ $gradeResult -ge 0 ];
		then {
			echo "请输入该成绩的说明信息(1.期考  2.补考)"
			read sayInfo
			case $sayInfo in
			1)
				echo "$studentNo,$stuName,$objectName,$gradeResult,期考" >> $GradeInfoPath
				echo "插入成功($studentNo,$stuName,$objectName,$gradeResult,期考)"
				;;
			2)
				echo "$studentNo,$stuName,$objectName,$gradeResult,补考" >> $GradeInfoPath
				echo "插入成功($studentNo,$stuName,$objectName,$gradeResult,补考)"
				;;
			*)
				echo "输入有误(仅能选1 or 2),插入失败"
				;;
			esac
		}
		else {
			echo "输入的成绩不符合要求(0<=grade<=100),插入失败"
		}
		fi
	}
			fi
}
del_stugrade_info(){
	echo "输入要删除成绩的学生的编号(需要学生尚存在于学生记录文件): "
	read studentNo
	export existFlag=false
	export delCount=0;
	export delLine=0;
	while read line
		do
			lineStudentNo=${line/,*/}
			if [ "$lineStudentNo" = "$studentNo" ];
			then {
				export existFlag=true
					break
			}
			fi
		done<$StudentInfoPath
	if [ "$existFlag" = "true" ];
			then {
				export existFlag=false
					sed  "/$studentNo/d" $GradeInfoPath > $GradeInfoPath"_back"
					mv $GradeInfoPath"_back" $GradeInfoPath
					echo "删除学生成绩成功:被删除学生编号$studentNo"
			}
	else {
		echo "学生记录文件中不存在该学生编号$studentNo,删除失败"
	}
			fi
}
Change_student_info(){
	
	echo "请输入要修改的学生编号:"
	read studentNo
	stringLine=`grep $studentNo $StudentInfoPath`
	if [ "$stringLine" != "" ];
		then {
			stuName=`echo "$stringLine"|awk -F',' '{print $2}'`
 			stuCollegeNo=`echo "$stringLine"|awk -F',' '{print $3}'`
 			studentSay=`echo "$stringLine"|awk -F',' '{print $4}'`
 			
			echo "要更新的学生信息记录为:$stringLine"
			echo "输入要更改的信息(1.姓名 2.学院编号 3.说明信息(1 or 2 or 3)):"
			read subCommand
			case $subCommand in
			1)
				echo "请输入该学生的姓名: "
				read newStudentName
				sed "/$studentNo/d" $StudentInfoPath > $StudentInfoPath"_back"
				mv $StudentInfoPath"_back" $StudentInfoPath
				echo "$studentNo,$newStudentName,$stuCollegeNo,$studentSay" >> $StudentInfoPath
				echo "更新学生记录成功($studentNo,$newStudentName,$stuCollegeNo,$studentSay)"
				;;
			2)
				echo "请输入该学生的学院编号: "
				read newCollegeNo
				collegeString=`grep $newCollegeNo $CollegeInfoPath`
				if [ "$collegeString" != "" ];
				then {
					sed "/$studentNo/d" $StudentInfoPath > $StudentInfoPath"_back"
					mv $StudentInfoPath"_back" $StudentInfoPath
					echo "$studentNo,$newStudentName,$newCollegeNo,$studentSay" >> $StudentInfoPath
					echo "更新学生记录成功($studentNo,$newStudentName,$newCollegeNo,$studentSay)"
				}
				else {
					echo "此学院编号($newCollegeNo)不存在于学院记录文件中,更新失败"
				}
				fi
				
				;;
			3)
				echo "请输入该学生的说明信息(1.在校 2.保留学籍 3.退学):"
				read sayInfo
				case $sayInfo in 
				1)
				sed "/$studentNo/d" $StudentInfoPath > $StudentInfoPath"_back"
				mv $StudentInfoPath"_back" $StudentInfoPath
				echo "$studentNo,$stuName,$stuCollegeNo,在校" >> $StudentInfoPath
				echo "更新学生记录成功($studentNo,$stuName,$stuCollegeNo,在校)"
					;;
				2)
				sed "/$studentNo/d" $StudentInfoPath > $StudentInfoPath"_back"
				mv $StudentInfoPath"_back" $StudentInfoPath
				echo "$studentNo,$stuName,$stuCollegeNo,保留学籍" >> $StudentInfoPath
				echo "更新学生记录成功($studentNo,$stuName,$stuCollegeNo,保留学籍)"
				;;
				3)
				sed "/$studentNo/d" $StudentInfoPath > $StudentInfoPath"_back"
				mv $StudentInfoPath"_back" $StudentInfoPath
				echo "$studentNo,$stuName,$stuCollegeNo,退学" >> $StudentInfoPath
				echo "更新学生记录成功($studentNo,$stuName,$stuCollegeNo,退学)"	
				;;
				*)
				echo "说明信息填写有误,更新记录失败"
					;;
				esac
					;;
 
			*)
				echo "输入有误,更新失败!"
				;;
			esac 
		}
		fi
}
insert_student_info(){
	echo "请输入学生的编号(不要重复输入!): "
		read studentNo
		export existFlag=false 
#判断是否存在编号和输入的一样的学生记录
		while read line
			do
				lineStuNo=${line/,*/}	
#输出格式 "数字$lineStuNo,数字2$studentNo"
			if [ "$lineStuNo" = "$studentNo" ];
			then {
				export existFlag=true
					break
			}
			fi
				done<$StudentInfoPath
 
#提出标识 "$existFlag"
				if [ "$existFlag" = "true" ];
			then echo "输入的编号$studentNo已经存在了,插入失败!"
				else {
					export existFlag=false
						echo "请输入学生姓名:"
						read stuName
						echo "请输入学生所在院校编号:"
						read stuCollegeNo
						while read line
							do
								collegeNo=${line/,*/}
							if [ "$collegeNo" = "$stuCollegeNo" ];
							then {
								export existFlag=true
									break
							}
							fi
								done<$CollegeInfoPath
 
								if [ "$existFlag" = "false" ];
							then {
								echo "输入的学院编号$stuCollegeNo不存在于学院信息记录文件中($CollegeInfoPath)"
							}
								else {
									echo "请输入该学生的说明信息(1.在校 2.保留学籍 3.退学):"
										read sayInfo
										case $sayInfo in 
									1)
										echo "$studentNo,$stuName,$stuCollegeNo,在校" >> $StudentInfoPath
										echo "插入学生记录成功($studentNo,$stuName,$stuCollegeNo,在校)"
										;;
									2)
										echo "$studentNo,$stuName,$stuCollegeNo,保留学籍" >> $StudentInfoPath
										echo "插入学生记录成功($studentNo,$stuName,$stuCollegeNo,保留学籍)    "
 
										;;
									3)
										echo "$studentNo,$stuName,$stuCollegeNo,退学" >> $StudentInfoPath
										echo "插入学生记录成功($studentNo,$stuName,$stuCollegeNo,退学)    "
 
										;;
									*)
										echo "说明信息填写有误,插入记录失败"
										;;
									esac
								}
							fi
 
				}
			fi
}
show_student_grade(){
	echo "=======================每位学生的总成绩============================== "
	awk 'BEGIN{FS=OFS=","}{
		namearrays[$1]=$2
		arrays[$1]+=$4
	}
	
	END{for(studentno in arrays)
		print studentno,namearrays[studentno],"总成绩:"arrays[studentno]}' $GradeInfoPath
}
show_student_goodgrade(){	
	echo "=======================总成绩的前5名============================= "
	
	awk 'BEGIN{FS=OFS=","}{
		namearrays[$1]=$2
		arrays[$1]+=$4
	}
	END{
	len=length(arrays)
	for(i=1;i<=len;i++){
		max=-1
		id=-1
		for(k in arrays)
			if(arrays[k]>max){
				max=arrays[k];
				id=k; 
			}
		arrays[id]=-1;
		sno[i]=id;
		score[i]=max;
		
	}		
	for(i=1;i<=len&&i<=5;++i)
		print sno[i],namearrays[sno[i]],"总成绩:"score[i]}' $GradeInfoPath
}
show_stu_info(){
	echo "==================================================" 
		echo "学生编号:姓名:学院编号:说明信息";
	cat $StudentInfoPath;
}
show_college_info(){
	echo "==================================================" 
		echo "学院编号:学院名称";
	cat $CollegeInfoPath;
}
show_stugrade_info(){
	echo "=================================================="
		echo "学生编号:学生姓名:科目名称:成绩:说明信息";
	cat $GradeInfoPath;
}
while true
do
 
#读取用户输入的指令
 
echo "===============WELCOME TO 学生管理系统============="
echo "===============0.退出学生管理系统=================="
echo "===============1.插入/删除学院信息记录============="
echo "===============2.插入/删除学生信息记录============="
echo "===============3.插入/删除学生成绩记录============="
echo "===============4.输出所有学生信息记录=============="
echo "===============5.输出所有学院信息记录=============="
echo "===============6.输出所有学生成绩记录=============="
echo "===============7.修改学生信息记录=================="
echo "===============8.输出学生成绩统计=================="
echo "输入命令:"
read iCommand
 
case $iCommand in
0)
echo "已经安全退出系统."
exit 0
;;
1)
echo "1.增加学院信息记录 2.删除学院信息记录"
read subCommand
case $subCommand in
	1)
		insert_college_info
		;;
	2)
		del_college_info
		;;
	*)
		echo "输入的命令有误(1 or 2)"
	;;
	esac ;;
2)
echo "1.增加学生信息记录  2.删除学生信息记录"
read subCommand
case $subCommand in 
    1)
        insert_student_info		
        ;;
    2)
        del_student_info
        ;;
    *)
        echo "输入的命令有误(1 or 2)"
        ;;
    esac ;;
3)
echo "1.增加学生成绩信息记录 2.删除学生成绩信息记录"
read subCommand
case $subCommand in
	1)
		insert_stugrade_info
		;;
	2)
		del_stugrade_info
		;;
	*)
		echo "输入的命令有误(1 or 2)"
		;;
	esac ;;

4)
show_stu_info
;;
5)
show_college_info
;;
6)
show_stugrade_info
;;
7)
Change_student_info
;;
8)
show_student_grade
;;
*)
echo "输入的命令错误"
;;
esac
done

运行结果

在这里插入图片描述

三、高级部分

题目:

Spark/hadoop框架的搭建与应用开发;

需求分析

当下社会,数据无处不在,这些数据繁杂而庞大,却又有无穷的商机,科技的奥秘,生活的秘密在这些数据中,对于这些有着无穷机会的数据,我们必须学会对它的分析和利用。而本次高级实验的目的,就是搭建好大数据处理方面的两个框架:Spark和hadoop。

资料分析

1.Hadoop:

Hadoop是由Apache基金会所开发的分布式系统基础架构,实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS;Hadoop框架最核心设计就是HDFS和MapReduce,HDFS为海量数据提供了存储,MapReduce为海量数据提供了计算。

Hadoop要解决的问题:海量数据的存储(HDFS)、海量数据的分析(MapReduce)和资源管理调度(YARN)。

Hadoop主要作用于分布式。

2.Spark:

Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处,Spark以其先进的设计理念,迅速成为社区的热门项目,围绕着Spark推出了Spark SQL、Spark Streaming、MLLib和GraphX等组件,也就是BDAS(伯克利数据分析栈),这些组件逐渐形成大数据处理一站式解决平台。从各方面报道来看Spark抱负并非池鱼,而是希望替代Hadoop在大数据中的地位,成为大数据处理的主流标准,不过Spark还没有太多大项目的检验,离这个目标还有很大路要走。

Spark使用Scala语言进行实现,它是一种面向对象、函数式编程语言,能够像操作本地集合对象一样轻松地操作分布式数据集(Scala 提供一个称为 Actor 的并行模型,其中Actor通过它的收件箱来发送和接收非同步信息而不是共享数据,该方式被称为:Shared Nothing 模型)。在Spark官网上介绍,它具有运行速度快、易用性好、通用性强和随处运行等特点。

步骤大纲

一、安装JAVA

首先安装JDK
使用 uname-a 查看系统是32位还是64位的,我这边是64位的ubuntu系统

去JAVA官网下载对应的版本的JDK,下载后使用rz命令传到服务器端 如果没有安装rz命令
使用sudo apt install lrzsz命令安装 安装完成后 输入rz 在弹出的界面选择刚才下好的JDK
在这里插入图片描述
(此处疏忽下错了版本 记得下tar.gz格式的)
使用 tar -zxvf jdk的压缩包 然后配置环境变量
使用 vi /etc/profile
打开之后按键盘(i)进入编辑模式,将下面的内容复制到最底部

export JAVA_HOME=/usr/local/jdk/jdk1.8.0_211 (注意对应版本)
export PATH=$JAVA_HOME/bin:$PATH 
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

配置完成之后,最重要的一步就是使文件立即生效:命令如下:
source /etc/profile
在运行这一条指令后,再使用java -version命令查看能否查看jdk的版本,如果能,则我们成功了。
我这里设置的路径需要用户权限,所以这里的vim包括之前的rz和tar -zxvf都需要加上sudo前缀,以获取权限。

二、Hadoop与Spark安装文件下载

Hadoop下载地址:http://hadoop.apache.org/
Spark下载地址:https://spark.apache.org/downloads.html

三、Hadoop安装
首先 创建用户名为Hadoop的账户

sudo useradd –m Hadoop –s /bin/bash
这条命令创建了可以登录的hadoop用户,并使用/bin/bash作为shell。
接着使用如下命令设置密码,可简单设置为hadoop,按提示输入两次密码:
sudo passwd hadoop
为hadoop用户增加管理员权限,方便部署。
sudo adduser hadoop sudo
最后注销当前用户,返回登录界面。在登录界面中选择刚创建的hadoop用户进行登录。
在这里插入图片描述

给系统安装openssh

更新apt+安装ssh
首先更新apt,执行如下命令:
sudo apt-get update
后续需要更改一些配置文件,建议安装vim
sudo apt-get install vim
安装软件时若需要确认,在提示处输入y即可。

集群、单节点模式都需要用到 SSH 登陆(类似于远程登陆,你可以登录某台 Linux 主机,并且在上面运行命令),Ubuntu 默认已安装了 SSH client,此外还需要安装 SSH server:
sudo apt-get install openssh-server
然后将密钥加入到授权中,配置成SSH无密码登录
cd ~/.ssh/ # 若没有该目录,请先执行一次ssh localhost
ssh-keygen -t rsa # 会有提示,都按回车就可以
cat./id_rsa.pub >> ./authorized_keys # 加入授权
此时再用ssh localhost命令,无需输入密码就可以直接登录

安装hadoop

将Hadoop安装包解压到/usr/local文件夹下
sudo tar –zxvfhadoop-2.8.0.tar.gz –C /usr/local
同样为了配置环境变量的方便,对解压后的文件夹进行重命名
sudo /usr/local
sudo mv hadoop-2.8.0hadoop
接下来编辑配置文件,配置环境变量
sudo vim/etc/profile
添加如下内容:
export HADOOP_HOME=/usr/local/hadoop
export PATH= P A T H : PATH: PATH:JAVA_HOME/bin:$HADOOP_HOME/bin
最后,重启机器或执行命令:source /etc/profile
可用hadoop version查看安装情况
在这里插入图片描述
将Hadoop的安装目录赋予读写权限,我采取直接一步到位的方式,赋予全部权限
sudochmod -R 777 /usr/local/hadoop

配置hadoop

hadoop的配置文件方案,网上的教程版本不一,因而在这里走了许多弯路,经过多次尝试,终于找到了适用于hadoop 2.8.0的配置文件方案

进入配置文件目录:
cd/usr/local/hadoop/etc/hadoop
修改core-site.xml:


fs.defaultFS
hdfs://127.0.0.1:9000


hadoop.tmp.dir
/home/hadoop/tmp/


修改hdfs-site.xml:


dfs.replication
1


这里指定dfs的备份目录,单机用1份就行
修改mapred-site.xml


mapreduce.framework.name
yarn


修改yarn-site.xml


yarn.resourcemanager.hostname
localhost


yarn.nodemanager.aux-services
mapreduce_shuffle

权限调整

将Hadoop与Spark的安装目录赋予读写权限,我采取直接一步到位的方式,赋予全部权限
sudochmod -R 777 /usr/local/hadoop
sudochmod -R 777 /usr/local/spark

安装spark

解压Spark安装包到/usr/local
sudo tar –zxvf spark-2.1.1-bin-hadoop2.7.tgz -C /usr/local
将解压目录重命名
cd/usr/local
sudo mvspark-2.1.1-bin-hadoop2.7 spark
配置环境变量,最终总体环境变量如下:
export JAVA_HOME=~/final/jdk1.8.0_211
export CLASSPATH=.: J A V A H O M E / l i b / d t . j a r : JAVA_HOME/lib/dt.jar: JAVAHOME/lib/dt.jar:JAVA_HOME/lib/tools.jar
export HADOOP_HOME=/home/nevermore/final/hadoop-3.1.2
export Mytest=/home/nevermore/final
export SPARK_HOME=/home/nevermore/final/spark-2.4.3-bin-hadoop2.7
export PATH=.: J A V A H O M E / b i n : JAVA_HOME/bin: JAVAHOME/bin:HADOOP_HOME/bin: M y t e s t : Mytest: Mytest:SPARK_HOME/bin:$PATH
保存并更新/etc/profile
source /etc/profile

平台搭建配置Spark

在spark安装目录的conf子目录下复制并重命名spark-env.sh.template为spark-env.sh
cd $SPARK_HOME/conf
sudo cp spark-env.sh.template spark-env.sh
sudo vim spark-env.sh
在spark-env.sh中添加:
export JAVA_HOME=/home/nevermore/final/jdk1.8.0_211
export SPARK_MASTER_IP=localhost
export SPARK_WORKER_MEMORY=1G
export HADOOP_CONF_DIR=/home/nevermore/final/hadoop-3.1.2/etc/hadoop
export SPARK_LOCAL_DIRS=/home/nevermore/final/hadoop-3.1.2/data/sparktmp

4.启动Spark-Shell
cd $SPARK_HOME/bin
sudo./spark-shell
出现如下界面,表示Spark-Shell已成功启动
在这里插入图片描述

四、总结

初级题目:

在初级题目中,我愈发深刻地理解了什么叫Linux里都是文件。无论是系统版本,内核版本还是进程运行状态,存储状态,都保存在文件中,都可以通过文件的方式输出出来,也熟悉了系统中保存这些信息的文件的位置。同时也明白了PATH环境变量的意义,也学会了如何配置PATH。
本次初级题目做出的作品有小而实用,详细的特点,是一个具有意义的小脚本。

中级题目:

中级题目是使用shell来开发一个学生管理系统,虽然在某种程度上并不实用,但这次经历让我更熟悉了shell语言的使用。在实验中,我遇到了在统计功能上难以排序的问题,在更换重写了几次排序算法后才得以解决。最后这个系统也还算功能完备
本次中级题目做出的作品功能完备,排版顺眼,并且是将数据保存到文本中,可随时编辑。

高级题目

本次高级题目是Spark/hadoop框架的搭建与应用开发,说实话在看到实验题目之前我对这两个框架是毫无了解,在查阅了资料之后了解到这是大数据处理方面的知识。于是大体按照资料教程进行框架的安装,同时根据教程作者与我本人开发环境的不同做适当不同的配置,在遇到许多配置方面的问题后又去查找教程,大体都是无法运行框架的问题,比如Spark框架的配置中我发现我无法运行脚本,查阅后发现环境变量中有问题,修改后才得以解决。
本次高级题目,完成了虚拟机中Spark和hadoop框架的安装和配置,在学习更多知识后可直接开始使用这两个框架。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值