0
点赞
收藏
分享

微信扫一扫

ubuntu20-hdoop环境安装-从零开始

云竹文斋 2022-05-04 阅读 129

文章目录

1. VMWare安装模板机

安装好ubutun20系统:
在这里插入图片描述

修改网络配置:

1. 修改VMWare的网络配置
编辑->虚拟网络配置->选择VMnet8
在这里插入图片描述

保证子网和NAT网关网段一致

2. 修改Windows网络配置
在这里插入图片描述

找到VMnet8, 右键属性,修改如下(ip地址不要和前面设置的网关ip一致)
在这里插入图片描述

3. 打开虚拟机进行配置
sudo gedit /etc/netplan/01-network-manager-all.yaml 修改成如下内容,其中dhcp为no表示不使用动态ip分配,address为192.168.10.101(不要和刚刚在window系统中配置的ip 192.168.10.3地址一样

network:
  version: 2
  ethernets:
    ens33:
      addresses: [192.168.10.101/24]
      dhcp4: no
      dhcp6: no
      gateway4: 192.168.10.2
      nameservers:
        addresses: [192.168.10.2]

修改机器名称:gedit /etc/hostname(切记切换到root用户)
在这里插入图片描述

机器名称和ip绑定:gedit /etc/hosts
hadoop2 hadoop3是后面要克隆出来的主机, ip是前面手动设置的ip
在这里插入图片描述

重启: reboot

完成以上步骤,在ubutu20中查看一下ip,可以看出ip地址和前面手动设置的一致
在这里插入图片描述

在window下ping测试:
在这里插入图片描述

之后用XSHELL进行连接,如果连接失败,将window系统中的host文件复制一份到桌面,进行以下检查:

  1. 虚拟机是否安装ssh ssh服务是否打开

  2. 虚拟机是否关闭防火墙

  3. 虚拟机的设置是否是NAT模式
    在这里插入图片描述

  4. 在windows中的VMnet8中配置的ip地址不要和虚拟机的ip地址一样,也不要和网关地址一样

连接成功情形:
在这里插入图片描述

2. 克隆模板机

  1. 关闭模板机器
  2. 右键模板机->管理->克隆(选择从现有快照克隆,因此要先对模板机打一个快照)->创建完整克隆

克隆完成截图:
在这里插入图片描述

然后按前面的步骤修改hadoop2和hadoop3中的主机名和ip, 注意不要重复并且在root用户下修改,修改完以后reboot重启

修改完成后,用XSHELL连接3台虚拟机:
在这里插入图片描述

3. JDK安装

通过XFTP将Linux版本的jdk1.8压缩包传到hadoop1
在这里插入图片描述在这里插入图片描述

  1. 解压: sudo tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/ 安装在opt目录下
    在这里插入图片描述

  2. sudo vi ~/.bashrc , 在后面添加java路径:

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

添加完保存再source, 查看是否设置成功
在这里插入图片描述

4. hadoop安装

  1. 解压hadoop到/opt目录下: sudo tar -zxvf hadoop-3.1.3.tar.gz -C /opt
  2. 在opt目录下添加权限:chown -R 用户名 ./hadoop-3.1.3
  3. 修改~/bashrc文件,sudo vi ~/.bashrc , 在后面添加java路径:
export HADOOP_HOME=/opt/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

在这里插入图片描述

  1. 添加完之后source ~/.bashrc, 输入hadoop命令查看是否配置成功:
    在这里插入图片描述

5. hadoop单机模式运行

数据存储在linux本地

  1. 在hadoop安装目录下创建一个文件夹wcinput, 在该目录下创建一个文件,比如word.txt, 文件里面随意输入一些内容
  2. 执行以下命令
    bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount wcinput/ ./wcoutput
    在这里插入图片描述

执行完成后进入wcoutput文件夹下查看:
在这里插入图片描述

结果显示了刚刚创建的word.txt中的各个单词的数量

注意点:在执行bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount wcinput/ ./wcoutput命令时要保证wcoutput文件夹不存在,如果想要再次执行该命令,需要删除wcoutput文件夹

6. 伪分布式搭建

数据存储在hdfs
以下文件在haoop安装目录中的/etc/hadoop/文件夹下

  1. 修改core.site.xml
<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/opt/hadoop-3.1.3/tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>
  1. 修改 hdfs-site.xml:
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/opt/hadoop-3.1.3/tmp/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/opt/hadoop-3.1.3/tmp/dfs/data</value>
    </property>
</configuration>
  1. namenode格式化
cd /usr/local/hadoop
./bin/hdfs namenode -format
//如果提示JAVA_HOME is not set 修改etc/hadoop/hadoop-env.sh 中的export JAVA_HOME=  等号后面填写具体的jdk安装路径

格式化完成后输入jps命令,如果格式化成功会显示NameNode”、”DataNode” 和“SecondaryNameNode”

  1. 启动
    在这里插入图片描述

  2. 准备数据
    在这里插入图片描述

  3. 执行

hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'
  1. 查看结果
    在这里插入图片描述

  2. 关闭
    在这里插入图片描述

7. 完全分布式的搭建

数据存储在多台服务器

7.1 在hadoop2主机上安装jdk和hadoop

用XSHELL连接hadoop1,使用scp命令将jdk hadoop复制到hadoop2 (当然也可以使用xftp进行文件上传)

scp -r /opt/jdk1.8.0_212/ pengfeigui@hadoop2:/home/pengfeigui
scp -r /opt/hadoop-3.1.3/ pengfeigui@hadoop2:/home/pengfeigui
scp -r /opt/jdk1.8.0_212/ pengfeigui@hadoop3:/home/pengfeigui
scp -r /opt/hadoop-3.1.3/ pengfeigui@hadoop3:/home/pengfeigui

在hadoop2上也要修改bashrc环境变量

7.2 在hadoop1上实现SSH无密码登录

进入hadoop1主机:

cd ~/.ssh  (如果提示没有ssh目录,先使用ssh localhost有秘密登录然后再退出)
rm ./id_rsa*
ssh-keygen -t rsa
cat ./id_rsa.pub >> ./authorized_keys
scp ~/.ssh/id_rsa.pub pengfeigui@hadoop2:/home/pengfeigui/

接着进入hadoop2主机:

mkdir ~/.ssh
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
rm ~/id_rsa.pub 

7.3 修改5个文件

5个文件所在目录:/opt/hadoop-3.1.3/etc/hadoop
1. core-site.xml

<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://hadoop1:9000</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>file:/opt/hadoop-3.1.3/tmp</value>
                <description>Abase for other temporary directories.</description>
        </property>
</configuration>

2. hdfs-site.xml

<configuration>
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>hadoop1:50090</value>
        </property>
        <property>
                <name>dfs.replication</name>
                <value>1</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/opt/hadoop-3.1.3/tmp/dfs/name</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/opt/hadoop-3.1.3/tmp/dfs/data</value>
        </property>
</configuration>

3. mapred-site.xml

<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.address</name>
                <value>hadoop1:10020</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>hadoop1:19888</value>
        </property>
        <property>
  					<name>yarn.app.mapreduce.am.env</name>
  					<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
			</property>
			<property>
  				<name>mapreduce.map.env</name>
  			<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
		</property>
		<property>
  			<name>mapreduce.reduce.env</name>
  			<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
		</property>
</configuration>

4. yarn-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>hadoop1</value>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
</configuration>

5. workers

该文件中保存作为datanode的主机,这里搭建hadoop1作为namenode,hadoop2作为datanode,因此删除worker文件中原始的localhost,改为hadoop2

7.4 启动

在hadoop1(Master节点)中的sbin目录中执行命令:
hdfs namenode -format (首次运行时需要执行,后面不需要)
start-dfs.sh
在这里插入图片描述
start-yarn.sh
在这里插入图片描述

mr-jobhistory-daemon.sh start historyserver

输入命令:jps查看:
在这里插入图片描述
保证NameNode、ResourceManager、SecondrryNameNode、JobHistoryServer 进程都存在

再登录到hadoop2主机(Slave节点)上使用jps命令:
在这里插入图片描述
存在 DataNode 和 NodeManager 进程

在hadoop1主机上使用hdfs dfsadmin -report查看datanode是否正常启动:
在这里插入图片描述

7.5 执行分布式实例

在hadoop1主机上:

hdfs dfs -mkdir -p /user/pengfeigui
hdfs dfs -mkdir -p input
hdfs dfs -put /opt/hadoop-3.1.3/etc/hadoop/*.xml input
hadoop jar /opt/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'

下次再运行需要移除之前的output目录:/opt/hadoop-3.1.3/bin/hadoop fs -rm -r output

以下是运行成功的截图:

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

ps: 如果运行失败,可能是虚拟机内存分配过小,修改mapred-site.xml,添加以下内容:

<property>
  <name>mapreduce.map.memory.mb</name>
  <value>1536</value>
</property>
<property>
  <name>mapreduce.map.java.opts</name>
  <value>-Xmx1024M</value>
</property>
<property>
  <name>mapreduce.reduce.memory.mb</name>
  <value>3072</value>
</property>
<property>
  <name>mapreduce.reduce.java.opts</name>
  <value>-Xmx2560M</value>
</property>

7.6 关闭

在hadoop1(Master)主机上面的hadoop安装目录下的sbin文件夹下执行

stop-yarn.sh
stop-dfs.sh
mr-jobhistory-daemon.sh stop historyserver
举报

相关推荐

0 条评论