大数据开发入门:二、Centos8安装Hadoop框架并运行示例程序(伪分布式)


上一篇:大数据开发入门:一、VMware15.5 Pro安装Centos8及系统设置(全步骤)

一、新建WinSCP连接

1.先下载WinSCP并安***r> version:5.13.2
链接:https://pan.baidu.com/s/19L-wzw01vpoiJu1nsg55-Q
提取码:bbaw

2.在虚拟机中输入命令su进入根用户,然后输入命令chmod -R 777 /opt给/opt文件夹授权,本教程以后的软件安装目录都在此处。
// 输入命令cd /后转到根目录,然后输入命令ll便可查看opt文件夹的权限情况。

3.新建站点
3.1首先一定要打开虚拟机,虚拟机配置信息在上一篇文章里介绍过。
3.2使用SFTP协议进行连接,主机名为虚拟机的IP地址,用户名和密码为虚拟机中你要登录的用户和密码。
// 如果在主机映射里设置了虚拟机IP地址与虚拟机主机名,此处的主机名也可以填写虚拟机主机名。

4.选择添加,把虚拟机的密钥保存到主机。添加后,以后便可自动登录。

5.连接建立成功
点击/进入根目录,然后点击opt目录并进入

6.将jdk和Hadoop压缩包利用WinSCP上传到虚拟机/opt目录下

二、安装jdk

1.在终端中输入命令exit退出根用户,输入命令cd /opt进入/opt文件夹,输入命令ls,可以看到刚刚利用WinSCP上传到该文件夹的两个压缩包。

2.输入命令tar zxvf jdk-8u251-linux-x64.tar.gz解压jdk-8u251-linux-x64.tar.gz,解压完毕后可以输入命令rm -rf jdk-8u251-linux-x64.tar.gz删除没用的压缩包,节省系统空间。
// 解压后会在/opt目录下产生jdk1.8.0_251文件夹

3.输入命令ln -s jdk1.8.0_251 jdk在/opt目录下创建jdk目录的软连接,注意这些操作都是用Hadoop用户完成的,不要使用根用户,否则以后运行程序会因为权限问题而出错。
/*
PS:
1.如果没用Hadoop用户进行解压,请使用命令chown修改,使用方法和参数请自行搜索。
2.创建软链接好处在于以后维护jdk版本会方便很多,jdk版本更新后不必去修改profile等信息了,哪个软件更新,便修改该软件相应的软链接即可,profile等文件中,只存放软连接的地址。
*/

4.在终端中输入命令vi /opt/env.sh创建env.sh脚本文件,并在脚本中按i进入插入模式,插入如下信息。
#!/bin/bash
#HOME
export JAVA_HOME=/opt/jdk
#PATH
export PATH=.:$JAVA_HOME/bin:$PATH
esc键进入命令模式,输入命令:wq保存并退出。

5.输入命令su进入根用户,然后输入命令vi /etc/profile修改profile

6.在文件最底部添加. /opt/env.sh,然后用命令:wq保存并退出

7.在终端里输入命令vi /etc/bashrc,对bashrc进行同样的修改,修改后保存并退出。

8.输入命令reboot重启系统,系统重启后设置生效,可以利用命令java -version进行验证。

三、安装Hadoop框架

1.利用命令cd /opt转到/opt目录
// 注意此时的用户应为Hadoop!!!

2.利用命令tar zxvf hadoop-2.7.7.tar.gz解压hadoop,解压完毕后利用命令rm -rf hadoop-2.7.7.tar.gz删除压缩包。
// 图片可参考安装jdk时的

3.输入命令ln -s hadoop-2.7.7 hadoop创建hadoop目录的软链接。
// 可用命令ll查看。

4.利用命令vi /opt/env.sh修改env.sh脚本,往脚本里添加Hadoop的相关信息,具体信息如下。
export HADOOP_HOME=/opt/hadoop
在PATH里添加:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
添加完成后用命令:wq退出。

5.利用命令cd /opt/hadoop/etc/hadoop/移到hadoop配置文件夹下,其中我们需要修改core-site.xml、hadoop-env.sh、hdfs-site.xml、mapred-site.xml、yarn-site.xml配置文件。
配置文件中具体的配置信息可参考Hadoop官网的开发文档,本教程只提供一个常用的配置方案。
5.1快速修改
/*
利用WinSCP上传我已经修改好的文件,替换原有文件
Hadoop需要修改的相关文件下载:
链接:https://pan.baidu.com/s/1h7Bqib6eF-pZsL86tDMoaA
提取码:imtz
*/

5.2利用vim编辑器在Centos里进行修改
// 不建议使用这种方式

5.2.1修改core-site.xml文件,添加如下内容

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://Hadoop:9000</value>
        <description>change hostname</description>
    </property>
    <property>
        <name>io.file.buffer.size</name>
        <value>131072</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/opt/hadoop/tmp</value>
    </property>
</configuration>

5.2.2修改hadoop-env.sh,将jdk目录添加到文件相应位置。(如下图)

5.2.3修改hdfs-site.xml文件,添加如下内容

<configuration>
    <property>  
           <name>dfs.namenode.secondary.http-address</name>  
           <value>Hadoop:9001</value>
    </property>
    <property>
		<name>dfs.namenode.name.dir</name>
		<value>file:/opt/hadoop/dfs/name</value>
    </property>
    <property>
		<name>dfs.datanode.data.dir</name>
		<value>file:/opt/hadoop/dfs/data</value>
    </property>
    <property>
    	<name>dfs.replication</name>
        <value>3</value>
    </property>
   	<property>  
             <name>dfs.webhdfs.enabled</name>  
             <value>true</value>  
    </property> 
</configuration>

5.3.4修改mapred-site.xml文件
首先运行命令cp mapred-site.xml.template mapred-site.xml创建mapred-site.xml文件。
然后添加如下内容

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>Hadoop:10020</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>Hadoop:19888</value>
    </property>
</configuration>

5.3.5修改yarn-site.xml文件,添加如下内容

<configuration>
	<property>
               <name>yarn.resourcemanager.scheduler.address</name>
               <value>Hadoop:8030</value>
	</property>
	<property>
               <name>yarn.resourcemanager.resource-tracker.address</name>
               <value>Hadoop:8031</value>
	</property>
	<property>
               <name>yarn.resourcemanager.address</name>
               <value>Hadoop:8032</value>
	</property>
     	<property>  
              <name>yarn.resourcemanager.admin.address</name>  
               <value>Hadoop:8033</value>  
       </property>  
	<property>
               <name>yarn.resourcemanager.webapp.address</name>
               <value>Hadoop:8088</value>
	</property>
	<property>
               <name>yarn.nodemanager.aux-services</name>
               <value>mapreduce_shuffle</value>
	</property>
	<property>
               <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
               <value>org.apache.hadoop.mapred.ShuffleHandler</value>
	</property>
</configuration>

6.重启后env.sh配置生效,输入命令hadoop version可查看hadoop版本

7.在终端中输入命令hdfs namenode -format进行格式化,出现此字样意味着格式化成功。

8.输入命令start-dfs.sh && start-yarn.sh,便可启动hdfs和yarn,其中hdfs是一种Hadoop文件系统,yarn是一种Hadoop资源管理器

9.输入命令jps,就可以查看相关进程

四、执行Hadoop示例程序

1.创建wordcount.txt并上传到hdfs中
在/opt/hadoop目录下执行命令cp LICENSE.txt wordcount.txt创建wordcout.txt。
执行命令hdfs dfs -mkdir /input,在hdfs根目录创建/input文件夹。
执行命令hdfs dfs -put wordcount.txt /input将创建好的wordcount.txt文件上传到/input文件夹。
执行命令hdfs dfs -ls /input,可以查看/input文件夹下的文件。

2.执行命令hadoop jar /opt/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar /input /output,便可运行示例程序。
/*
命令解释:hadoop意味着使用hadoop框架,jar表示运行jar包程序,后边 /opt/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar这一串是Hadoop示例程序的绝对位置(也可以使用相对位置),/input是hdfs文件系统中的程序输入目录,/output是程序执行后保存运行结果的目录。需要注意的是,/output目录不能提前存在,否则会程序执行失败,/output目录是经过程序运行才产生的,这里的命令只是给运行结果目录命名。
*/

3.在主机的浏览器中输入192.168.137.120:50070并访问,可以进入HDFS的web页面,在这里我们可以看到刚刚输出的结果,我们可以利用浏览器将结果下载到主机。