大数据hadoop实验
大数据hadoop实验
镜像下载:ubuntu-18.04.6-desktop-amd64.iso
安装ubuntu系统
一路确定就行了
设置dhcp模式否则无法联网安装
#dhcp服务
然后开机,然后选择中文,然后按提示安装
然后就开始安装就行了,到后面重启之后,可能会遇到这个界面
解决办法
然后你再开机就行了
切换阿里云镜像源
等待更新缓存
到桌面后右键桌面空白处打开终端进行输入下面指令
一键安装vm-tools可以实现跨端复制粘贴
1 | sudo wget https://resource.qianyios.top/init.sh |
接下来重启等待软件生效之后,你就关机
,这时候你要打个快照
,以便后面做项目出错可以恢复,然后开机
创建hadoop用户
创建hadoop用户并且设置密码
1 | sudo useradd -m hadoop -s /bin/bash |
给hadoop用户添加sudo权限
1 | sudo adduser hadoop sudo |
这时候桌面右上角注销账号切换成hadoop
设置ssh免密
一键全部复制,然后粘贴回车就会自动进行免密
代码中有password=“123456”,记得改成你的hadoop用户的密码
1 | sudo cat >ssh.sh<<"EOF" |
运行脚本
1 | bash ssh.sh |
测试登入localhost是否可以实现无密码登入
1 | ssh localhost |
成功
安装java和hadoop
将两个文件复制到下载的目录去
然后在这个文件夹下,空白处右键,打开终端
1 | 确认一下当前文件夹是不是有这两个文件 |
1 | ls |
以下的全部复制运行
1 | sudo mkdir /usr/lib/jvm |
这里是作业要截图的地方
这时候关机打个快照
,命名为基础
伪分布安装
编写cort-site.yaml文件
以下的全部复制运行
1 | cat > /usr/local/hadoop/etc/hadoop/core-site.xml<< "EOF" |
编写hdfs-site.xml
以下的全部复制运行
1 | cat >/usr/local/hadoop/etc/hadoop/hdfs-site.xml<<"EOF" |
启动hhdfs服务
hdfs初始化
这条命令只需要运行一次,以后都不要再运行了!!!!!!
这条命令只需要运行一次,以后都不要再运行了!!!!!!
这条命令只需要运行一次,以后都不要再运行了!!!!!!
1 | hdfs namenode -format |
出现这个说明初始化成功
添加hdfs yarn的环境变量
以下的全部复制运行
1 | echo "export HDFS_NAMENODE_USER=hadoop" >> ~/.bashrc |
1 | #开启hadoop的命令 |
这里是作业要截图的地方
jps命令用来查看进程是否启动,以上是hadoop正常启动的进程,总共有6个
访问hadoop网页
看看你的ip
1 | ip a |
如果你这里没有ip说明你没有开启dhcp服务,自行回到最开始,找开启dhcp的方法,关机开启dhcp,然后开机就会有ip了
这里是作业要截图的地方
1 | http://192.168.48.132:9870/ |
关机步骤
这时候关闭hadoop集群
1 | stop-all.sh |
然后关机打快照,命名伪分布
1 | sudo poweroff |
然后在这里打个快照,命名为伪分布安装成功,等你哪天机子坏了,你就可以恢复快照
严肃告知,别说我没提醒你,不要直接关机,也不要挂起虚拟机,否则你的虚拟机和hadoop坏了,你就重装吧
第一次实验
熟悉常用的Linux操作
1)cd命令:切换目录
(1) 切换到目录“/usr/local”
1 | cd /usr/local |
(2) 切换到当前目录的上一级目录
1 | cd .. |
(3) 切换到当前登录Linux系统的用户的自己的主文件夹
1 | cd ~ |
2)ls命令:查看文件与目录
查看目录“/usr”下的所有文件和目录
1 | cd /usr |
3)mkdir命令:新建目录
(1)进入“/tmp”目录,创建一个名为“a”的目录,并查看“/tmp”目录下已经存在哪些目录
1 | cd /tmp |
(2)进入“/tmp”目录,创建目录“a1/a2/a3/a4”
1 | cd /tmp |
4)rmdir命令:删除空的目录
(1)将上面创建的目录a(在“/tmp”目录下面)删除
(2)删除上面创建的目录“a1/a2/a3/a4” (在“/tmp”目录下面),然后查看“/tmp”目录下面存在哪些目录
1 | cd /tmp |
5)cp命令:复制文件或目录
(1)将当前用户的主文件夹下的文件.bashrc复制到目录“/usr”下,并重命名为bashrc1
1 | sudo cp ~/.bashrc /usr/bashrc1 |
(2)在目录“/tmp”下新建目录test,再把这个目录复制到“/usr”目录下
1 | cd /tmp |
6)mv命令:移动文件与目录,或更名
(1)将“/usr”目录下的文件bashrc1移动到“/usr/test”目录下
1 | sudo mv /usr/bashrc1 /usr/test |
(2)将“/usr”目录下的test目录重命名为test2
1 | sudo mv /usr/test /usr/test2 |
7)rm命令:移除文件或目录
(1)将“/usr/test2”目录下的bashrc1文件删除
1 | sudo rm /usr/test2/bashrc1 |
(2)将“/usr”目录下的test2目录删除
1 | sudo rm -r /usr/test2 |
8)cat命令:查看文件内容
查看当前用户主文件夹下的.bashrc文件内容
1 | cat ~/.bashrc |
9)tac命令:反向查看文件内容
反向查看当前用户主文件夹下的.bashrc文件的内容
1 | tac ~/.bashrc |
10)more命令:一页一页翻动查看
翻页查看当前用户主文件夹下的.bashrc文件的内容
1 | more ~/.bashrc |
11)head命令:取出前面几行
(1)查看当前用户主文件夹下.bashrc文件内容前20行
1 | head -n 20 ~/.bashrc |
(2)查看当前用户主文件夹下.bashrc文件内容,后面50行不显示,只显示前面几行
1 | head -n -50 ~/.bashrc |
12)tail命令:取出后面几行
(1)查看当前用户主文件夹下.bashrc文件内容最后20行
1 | tail -n 20 ~/.bashrc |
(2)查看当前用户主文件夹下.bashrc文件内容,并且只列出50行以后的数据
1 | tail -n +50 ~/.bashrc |
13)touch命令:修改文件时间或创建新文件
(1)在“/tmp”目录下创建一个空文件hello,并查看文件时间
1 | cd /tmp |
(2)修改hello文件,将文件时间整为5天前
1 | touch -d "5 days ago" hello |
14)chown命令:修改文件所有者权限
将hello文件所有者改为root帐号,并查看属性
1 | sudo chown root /tmp/hello |
15)find命令:文件查找
找出主文件夹下文件名为.bashrc的文件
1 | find ~ -name .bashrc |
16)tar命令:压缩命令
(1)在根目录“/”下新建文件夹test,然后在根目录“/”下打包成test.tar.gz
1 | sudo mkdir /test |
(2)把上面的test.tar.gz压缩包,解压缩到“/tmp”目录
1 | sudo tar -zxv -f /test.tar.gz -C /tmp |
17)grep命令:查找字符串
从“~/.bashrc”文件中查找字符串’examples’
1 | grep -n 'examples' ~/.bashrc |
18)配置环境变量
(1)请在“~/.bashrc”中设置,配置Java环境变量
1 | echo "export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162" >> ~/.bashrc |
(2)查看JAVA_HOME变量的值
1 | echo $JAVA_HOME |
熟悉常用的Hadoop操作
(1)使用hadoop用户登录Linux系统,启动Hadoop(Hadoop的安装目录为“/usr/local/hadoop”),为hadoop用户在HDFS中创建用户目录“/user/hadoop”
1 | start-dfs.sh |
(2)接着在HDFS的目录“/user/hadoop”下,创建test文件夹,并查看文件列表
1 | hdfs dfs -mkdir test |
(3)将Linux系统本地的“~/.bashrc”文件上传到HDFS的test文件夹中,并查看test
1 | hdfs dfs -put ~/.bashrc test |
(4)将HDFS文件夹test复制到Linux系统本地文件系统的“/usr/local/hadoop”目录下
1 | hdfs dfs -get test ./ |
第二次实验
安装eclipse
为了提高程序编写和调试效率,本教程采用Eclipse工具编写Java程序。
现在要执行的任务是:假设在目录hdfs://localhost:9000/user/hadoop
下面有几个文件,分别是file1.txt、file2.txt、file3.txt、file4.abc和file5.abc,这里需要从该目录中过滤出所有后缀名不为.abc
的文件,对过滤之后的文件进行读取,并将这些文件的内容合并到文件hdfs://localhost:9000/user/hadoop/merge.txt
中。
要确保HDFS的/user/hadoop
目录下已经存在file1.txt、file2.txt、file3.txt、file4.abc和file5.abc,每个文件里面有内容。这里,假设文件内容如下:
file1.txt的内容是: this is file1.txt
file2.txt的内容是: this is file2.txt
file3.txt的内容是: this is file3.txt
file4.abc的内容是: this is file4.abc
file5.abc的内容是: this is file5.abc
后面我会给命令,上面的内容就先看看
登入hadoop用户
不多说了,启动hadoop集群
1 | start-all.sh |
下载eclipse安装包到ubuntu的下载目录,然后在空白处右键打开终端
1 | sudo ls |
1 | sudo tar -zxvf eclipse-4.7.0-linux.gtk.x86_64.tar.gz -C /usr/local |
启动eclipse
1 | eclipse |
在Eclipse中创建项目
启动Eclipse。当Eclipse启动以后,会弹出如下图所示界面,提示设置工作空间(workspace)。
选择File-->New-->Java Project
菜单,开始创建一个Java工程,会弹出如下图所示界面。在Project name
后面输入工程名称HDFSExample
,选中Use default location
,让这个Java工程的所有文件都保存到/home/hadoop/workspace/HDFSExample
目录下。在JRE
这个选项卡中,可以选择当前的Linux系统中已经安装好的JDK,比如jdk1.8.0_162。然后,点击界面底部的Next>
按钮,进入下一步的设置。
为项目添加需要用到的JAR包
为了能够运行程序,我们有四个目录
的jar包
要添加到工程去
(1)
/usr/local/hadoop/share/hadoop/common
目录下的所有JAR包,包括
hadoop-common-3.1.3.jar
、hadoop-kms-3.1.3.jar
hadoop-common-3.1.3-tests.jar
、hadoop-nfs-3.1.3.jar
注意,不包括目录jdiff、lib、sources和webapps;
(2)
/usr/local/hadoop/share/hadoop/common/lib
目录下的所有JAR包;
(3)/usr/local/hadoop/share/hadoop/hdfs
目录下的所有JAR包,注意,不包括目录jdiff、lib、sources和webapps;
(4)/usr/local/hadoop/share/hadoop/hdfs/lib
目录下的所有JAR包。
以下我只演示第一种和第二种!!!!!!!!!
以下我只演示第一种和第二种!!!!!!!!!
以下我只演示第一种和第二种!!!!!!!!!
以下我只演示第一种和第二种!!!!!!!!!
第一种
/usr/local/hadoop/share/hadoop/common
目录下的所有JAR包
点击Add External JARs…
按钮,点击其他位置,自己看这个路径定位到这/usr/local/hadoop/share/hadoop/common
,选择下面的四个包,然后点击ok
第二种
/usr/local/hadoop/share/hadoop/common/lib
目录下的所有JAR包;
以下两个目录,我就不演示了,如果有文件夹被全选中,你就按住ctrl然后点击文件夹,就可以取消选中了,我们只添加所有后缀名为
.jar
的包(3)
/usr/local/hadoop/share/hadoop/hdfs
目录下的所有JAR包,注意,不包括目录jdiff、lib、sources和webapps;
(4)/usr/local/hadoop/share/hadoop/hdfs/lib
目录下的所有JAR包。
最后是这样的
编写Java应用程序
在该界面中,只需要在Name
后面输入新建的Java类文件的名称,这里采用称MergeFile
,其他都可以采用默认设置,然后,点击界面右下角Finish
按钮。
把下面的代码直接写到MergeFile.java,全选复制粘贴
,这就不多说了,然后记得Ctrl+S保存
1 | import java.io.IOException; |
编译运行程序
在这里强调一下
,如果你没启动hadoop自行启动,我早已在7.1告知启动了
编写测试文件
1 | echo "this is file1.txt" > file1.txt |
最后验证是否成功
1 | hdfs dfs -cat /user/hadoop/merge.txt |
应用程序的部署
因为前面只是在eclipse运行java项目才会生成merge.txt,我们的目的是通过hadoop去执行这个java项目,所以我们要对工程打包
创建myapp目录
目的:用来存放hadoop应用程序目录
1 | mkdir /usr/local/hadoop/myapp |
开始打包程序
Launch configuration
下拉选择MergeFile-HDFSExample
Export destination
填写 /usr/local/hadoop/myapp/HDFSExample.jar
查看是否生成
1 | ls /usr/local/hadoop/myapp |
重新验证项目的运行
由于我们在eclipse测试过了项目,之前就在hdfs目录生成了/user/hadoop/merge.txt
,为了验证刚刚打包的项目,我们要删掉这个/user/hadoop/merge.txt
,等等重新运行项目
1 | hdfs dfs -rm /user/hadoop/merge.txt |
如果你没事了,要关机了就回到这里5.6 关机步骤,去执行关机
顺便把eclipse
的窗口关掉
严肃告知,别说我没提醒你,不要直接关机,也不要挂起虚拟机,否则你的虚拟机和你的hadoop坏了,你就重装,如果你坏了你也可以恢复快照到
伪分布安装成功
,但是你只是要重新做这周的实验