文章目录
“大数据技术原理与应用” 课程实验报告
hadoop官网:https://hadoop.apache.org/
题目
熟悉常用的Linux操作和Hadoop操作
实验环境
Ubuntu 18.04
实验内容
熟悉常用的Linux命令
- 使用 cd 命令 :切换目录
切换到目录 “/usr/local”
切换到当前目录的上一级目录
切换到当前登录Linux操作系统的用户的自己的文件夹
这里我现在的用户是root用户,方便进行后续的操作
2. ls命令 :查看文件与目录
查看目录 “/usr” 下的所有文件与目录
两种方式,一种是先进入/usr目录然后使用ls,或者直接使用ls命令
-
mkdir命令:新建文件与目录
进入 “/tmp” 目录,创建一个名为 “a” 的目录,并查看 “/tmp” 目录下已经存在的那些目录
进入“/tmp” 目录,创建目录 “a1/a2/a3/a4”
-
rmdir命令 :删除空目录
将上面创建的目录 a 删除
删除上面创建的目录 ”a1/a2/a3/a4“ ,然后查看 ”/tmp“ 目录下面存在那些目录
-
cp 命令: 复制文件或目录
将当前用户的主文件夹下的文件.bashrc复制到目录 ”/usr“ 下,并重命名为bashrcl。
在目录 ”/tmp“下新建目录test,再把这个目录复制到 “/usr” 目录下。(这里使用cp复制目录的时候需要指定参数-r)
-
mv 命令:移动文件与目录,或更名
①将“/usr”目录下的文件 bashrcl 移动到 “/usr/test” 目录下。
②将“/usr”目录下的 test 目录重命名为 test2。
-
rm 命令:移除文件或目录。
①将“usr/test2” 目录下的 bashrcl 文件删除。
②将“/usr”目录下的 test2 目录删除。
-
cat命令:查看文件内容。
查看当前用户主文件夹下的.bashrc 文件内容。
-
tac 命令:反向查看文件内容。
反向查看当前用户主文件夹下的.bashrc 文件的内容。
-
more 命令:一页一页翻动查看。
翻页查看当前用户主文件夹下的.bashrc 文件的内容。
-
head 命令:取出前面几行。
①查看当前用户主文件夹下 .bashrc 文件内容前20行。
② 查看当前用户主文件夹下.bashrc文件内容,后面 50行不显示,只显示前面几行。 -
tail命令:取出后面几行。
①查看当前用户主文件夹下.bashrc文件内容最后 20行。
② 查看当前用户主文件夹下.bashrc 文件内容,并且只列出 50行以后的数据。
-
touch 命令:修改文件时间或创建新文件。
①在“/tmp”目录下创建一个空文件 hello,并查看文件时间。
② 修改hello 文件,将文件时间修改为5 天前。
-
chown 命令:修改文件所有者权限。
将hello 文件所有者改为root,并查看属性。
-
find 命令:文件查找。
找出主文件夹下文件名为.bashrc 的文件。
-
tar 命令:压缩命令。
①在根目录“/”下新建文件实test,然后在根目录“/’下打包成test .tar. gz。
② 把上面的 test.tar.gz 压缩包,解压缩到“/tmp”目录
-
grep 命令:查找宇符串。
从 "~/bashre"文件中查找字符串’examples’
-
配置环境变量。
①请在"~/.bashre"中设置,配置 Java 环境变量。
② 查看JAVA _HOME 变量的值安装Java
apt install openjdk-8-jdk-headless
查看java安装的位置为/usr/lib/jvm/java-8-openjdk-amd64
配置环境变量
使用命令打开文件
vim ~/.bashrc
然后在文件末端加入 export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
保存后退出,使用命令source ~/.bashrc使配置生效
输入$JAVA_HOME查看是否配置成功
安装Hadoop
安装ssh服务端
apt-get install openssh-server
配置免密登录
cd ~/.ssh
ssh-keygen -t rsa
cat ./id_rsa.pub >> ./authorized_keys
安装Java环境并设置环境变量
上面已经安装了java环境了,就不再进行安装了
进行环境变量的配置
使用命令vim ~/.bashrc打开文件,然后在末端写入
保存后退出,使用命令source ~/.bashrc加载配置,使配置生效
安装单机Hadoop
下载hadoop
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.3.2/hadoop-3.3.2.tar.gz
解压
tar -zxvf hadoop-3.3.2.tar.gz
查看hadoop版本
bin/hadoop version
在hadoop目录下新建input目录,用来存放数据,并将etc/hadoop目录下的配置文件放入input目录下
查看可运行的测试用例为hadoop-mapreduce-examples-3.3.2.jar
运行并查看结果
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.2.jar grep input/ output ‘dfs[a-z.]+’
cat output/*
hadoop伪分布式安装
修改hadoop配置
vim etc/hadoop/core-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/root/rDesk/hadoop-3.3.2/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
vim etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/root/rDesk/hadoop-3.3.2/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/root/rDesk/hadoop-3.3.2/tmp/dfs/data</value>
</property>
</configuration>
对于hdfs-site.xml文件,replication设置为1是Hadoop运行的默认最小值,限制了HDFS中同一份数据的副本数量,由于该伪分布式,集群中只有一个节点,因此replication也只能设置为1.
初始化文件系统
bin/hdfs namenode -format
初始化成功后启动HDFS
(若是出现问题可看下面出现问题目录内的内容)
sbin/start-dfs.sh
在HDFS中创建一个目录
新建一个input目录
将etc/hadoop/下的所有xml文件上传到input目录
bin/hdfs dfs -put etc/hadoop/*.xml /root/inpu
再次执行样例并使用在HDFS内创建的input目录内容进行计算,输出到HDFS文件的/root/output目录内
bin/hadoop jar /root/rDesk/hadoop-3.3.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.2.jar grep /root/input /root/output ‘dfs[a-z.]+’
查看计算结果
bin/hdfs dfs -cat /root/output/*
运行wordcount
bin/hadoop jar /root/rDesk/hadoop-3.3.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.2.jar wordcount /root/input /root/output
停止运行HDFS
sbin/stop-dfs.sh
出现的问题
but there is no HDFS_NAMENODE_USER defined. Aborting operation.
在启动hadoop时出现错误,显示没有对应的NAMENODE_USER,DATANODE_USER,等
问题截图
问题解决
打开sbin/start-dfs.sh,进行编辑
vim sbin/start-dfs.sh
在头部插入
HDFS_NAMENODE_USER=root
HDFS_DATANODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
JAVA_HOME is not set and could not be found.
启动sbin/start-hdfs.sh报错
hadoop内的java环境变量没有设置好。
问题解决
打开hadoop-env.sh进行配置
vim etc/hadoop/hadoop-env.sh
找到JAVA_HOME位置,并改为自己设备内对应的java环境变量位置
执行sbin/stop-dfs.sh时出现Attempting to operate on hdfs namenode as root…
问题截图:
问题解决
编辑sbin/stop-dfs.sh文件
vim sbin/stop-dfs.sh
在头部加入
HDFS_NAMENODE_USER=root
HDFS_DATANODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
然后再运行sbin/stop-dfs.sh即可