hadoop开发实战

231 阅读4分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第2天,点击查看活动详情

环境配置

centos7配置

虚拟机安装好后需要配置静态ip、ip映射、防火墙设置和主机名修改 配置静态ip及ip映射。
sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=fcc18852-431d-472c-9d0d-cd3ca9d4f33a
DEVICE=ens33
ONBOOT=yes

#添加参数
IPADDR=192.168.219.102
NETWASK=255.255.255.0
GATEWAY=192.168.219.2

service network restart

image.png 虚拟机的网络配置有三种模式:桥接模式、NAT模式、Host-only 。

VMware 的几个虚拟设备:

  • VMnet0:这是 VMware 用于虚拟桥接网络下的虚拟交换机,一般是不可见的,因为桥接一般直接使用真实网卡;
  • VMnet1:这是 VMware 用于虚拟Host-Only网络下的虚拟交换机;
  • VMnet8:这是 VMware 用于虚拟NAT网络下的虚拟交换机;
  • VMware Network Adapter VMnet1:这是 Host 用于与 Host-Only 虚拟网络进行通信的虚拟网卡;
  • VMware Network Adapter VMnet8:这是 Host 用于与 NAT 虚拟网络进行通信的虚拟网卡;

下面我们一块看看这三种模式的区别

桥接模式

简单来说,VMWare虚拟出来的操作系统就像是局域网中的一台独立的主机,它可以访问网内任何一台机器。但是需要我们手动去配置IP地址和网关,IP地址要与主机的无线网的IP段对应,子网掩码,网关,DNS都需要与宿主机保持一致。

Snipaste_2022-12-20_10-48-30.jpg

NAT模式

NAT模式实际是虚拟了一个网卡出来,虚拟机直接使用链接这个虚拟网卡,每次访问和交互通过这个虚拟网卡交换数据。虚拟机发送数据给实体机:虚拟机系统->虚拟网卡->实体机系统(可以发现是不经过真实网卡的流程简单很多);虚拟机访问外网:虚拟机系统->虚拟网卡->实体机系统->真实网卡->路由器->外网。

Snipaste_2022-12-20_10-52-11.jpg 虚拟机借助 NAT (网络地址转换)功能,通过宿主机器所在的网络来访问公网。

Host-only

在 Host-Only 模式下,虚拟网络是一个全封闭的网络,它唯一能够访问的就是主机。其实 Host-Only 网络和 NAT 网络很相似,不同的地方就是 Host-Only 网络没有 NAT 服务,所以虚拟网络不能连接到 Internet 。主机和虚拟机之间的通信是通过 VMware Network Adepter VMnet1 虚拟网卡来实现的。

Snipaste_2022-12-20_10-53-18.jpg

修改主机名 hostnamectl set-hostname hadoop

图片1.png 防火墙设置

systemctl status firewalld.service命令,查看防火墙状态
systemctl stop firewalld.service命令,关闭防火墙
systemctl disable firewalld.service”命令,永久关闭防火墙

安装jdk

将安装包解压到/opt/module 目录
配置环境变量

export JAVA_HOME=/opt/module/jdk1.8.0_341  
export PATH=$PATH:$JAVA_HOME/bin

image.png

输入java -version

image.png

安装hadoop

将hadoop解压到/opt/module

配置环境变量

image.png

image.png 配置 hadoop-env.sh(在hadoop/etc/hadoop/ 下)

vim hadoop-env.sh
//修改java路径和hadoop路径
export JAVA_HOME=/opt/module/jdk1.8.0_341
export HADOOP_CONF_DIR=/opt/module/hadoop/etc/hadoop

配置 core-site.xml

vim core-site.xml

<configuration>
    <property>
        <name>fs.default.name</name>
        <value>hdfs://hadoop01:9000</value>   # master 是你自己的主机名
    </property>

    <property>
       <name>hadoop.tmp.dir</name>
       <value>/opt/module/hadoop/tmp</value>  # 改成你自己的文件地址
    </property>
</configuration>

配置mapred-site.xml

这个文件初始时是没有的,但是有一个模板文件,mapred-site.xml.template所以需要拷贝一份,并重命名为mapred-site.xml

cp ./mapred-site.xml.template ./mapred-site.xml

<configuration>
    <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
    </property>
</configuration>

配置yarn-site.xml

<configuration>
<!-- Site specific YARN configuration properties -->
    <property>
       <!--指定yarn的老大 resoucemanager的地址-->
       <name>yarn.resourcemanager.hostname</name>:
       <value>hadoop01</value>
    </property>       
    <property>
      <!--NodeManager获取数据的方式-->
     <name>yarn.nodemanager.aux-services</name>
     <value>mapreduce_shuffle</value>
    </property>
</configuration>

编辑slaves文件 修改 localhost 为 master

wordcount实例

启动hadoop  start-dfs.sh  启动yarn start-yarn.sh

image.png image.png
本地创建一个文本文件 touch test.txt

image.png

首先先在hdfs的根目录下创建一个input目录hdfs dfs -mkdir /input

然后上传到hdfs上 hdfs dfs -put ./test.txt /input

查看是否成功上传 hdfs dfs -ls /input

image.png 运行wordcount实例

hadoop jar hadoop-mapreduce-examples-2.7.7.jar  wordcount /input /output
hadoop工作成功后会自己在指定路径/output 生成两个文件
我们看一下hdfs dfs -ls /output

image.png 第一个文件/output/_SUCCESS:是表示工作成功的文件,没有具体的文本,这个我们忽略.

第二个文件/output/part-r-00000:才是我们真正的输出文件

查看第二个文件 hdfs dfs -cat /output/part-r-00000

image.png

总结

Hadoop是一个分布式文件系统和分布式计算框架,它可以帮助我们处理大数据集。下面是 Hadoop 安装的一般步骤:

(1) 安装 Java 环境:Hadoop 是基于 Java 的,因此需要先安装 Java 环境。可以在官网下载最新版本的 JDK,然后根据安装指南进行安装。

(2) 下载 Hadoop:从 Hadoop 官网下载最新版本的 Hadoop。

(3) 解压 Hadoop:将下载的 Hadoop 压缩文件解压到你想要的位置。

(4) 配置环境变量:在系统的环境变量中添加 Hadoop 的安装路径。

(5) 配置 Hadoop 配置文件:在 Hadoop 的配置目录中找到并编辑配置文件,配置 Hadoop 的运行环境。

(6) 启动 Hadoop:在 Hadoop 的安装目录下运行启动脚本,启动 Hadoop 集群