Hadoop搭建,单机模式,伪分布模式,完全分布模式

环境:VMware15.5 pro、CentOS-7-x86_64-DVD-2003、hadoop-2.10.1、jdk-8u261-linux-x64

注:在root用户下操作,避免缺少什么权限

一、网络配置、环境配置

NAT模式的网络配置有以下两种形式:
第一种是dhcp动态分配ip,就是说ip地址是可能会发生变化的,但是操作简单;
第二种是指定静态ip,ip地址是由自己在可用ip范围之间随意指定的,而且不会发生变化,但是配置有点点复杂;

1.1 网络配置–dhcp动态分配ip在这里插入图片描述

在这里插入图片描述

启动虚拟机

cd /etc/sysconfig/network-scripts
# 查看当前路径下的文件
ls

在这里插入图片描述

# 修改第一个配置文件
vi ifcfg-ens33

在这里插入图片描述

service network restart

在这里插入图片描述

# 重启
reboot
# ping 百度 显示如下则成功
ping www.baidu.com

在这里插入图片描述

1.2 网络配置–静态指定ip

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

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

cd /etc/sysconfig/network-scripts
# 查看当前路径下的文件
ls

在这里插入图片描述

# 修改第一个配置文件
vi ifcfg-ens33

在这里插入图片描述

service network restart

在这里插入图片描述

# 查看ip地址
ip addr 或 ip a

在这里插入图片描述

# ping 百度 显示如下则成功
ping www.baidu.com

在这里插入图片描述

1.3 配置java环境和hadoop环境

  • 上传java和hadoop到根目录

在这里插入图片描述

  • 解压java和hadoop

    tar -zxvf jdk-8u261-linux-x64.tar.gz
    tar -zxvf hadoop-2.10.1.tar.gz
    # 查看解压后的文件夹
    ls
    

在这里插入图片描述

  • 修改文件夹的名字、方便操作

    mv hadoop-2.10.1 hadoop
    mv jdk1.8.0_261 jdk
    # 查看修改后的文件夹
    ls
    

在这里插入图片描述

  • 移动hadoop和jdk到/usr/lcoal目录下

    mv jdk /usr/local
    mv hadoop /usr/local
    # 切换至/usr/local
    cd /usr/local
    # 查看移动后的文件夹
    ls
    

在这里插入图片描述

  • 修改/etc/profile 文件

    vi /etc/profile
    

    在最后追加以下内容,一定不要写错

    export JAVA_HOME=/usr/local/jdk
    export PATH=$PATH:$JAVA_HOME/bin
    export HADOOP_HOME=/usr/local/hadoop
    export PATH=$PATH:$HADOOP_HOME/bin/:$HADOOP_HOME/sbin
    

在这里插入图片描述

  • 刷新/etc/profile

    source /etc/profile
    
  • 验证

    java -version
    

在这里插入图片描述

hadoop version

在这里插入图片描述

二、Hadoop单机模式

2.1 创建数据文件 输入内容

  • 创建文件夹

    mkdir ~/input
    
  • 创建并打开数据文件

    vim ~/input/data.txt
    
  • 输入数据

    Hello World
    Hello World
    

2.2 运行MapReduce WordCount 例子

  • 进入hadoop的安装目录下的 share/hadoop/mapreduce/

    cd ${HADOOP_HOME}/share/hadoop/mapreduce/
    
  • 运行MapReduce WordCount

    hadoop jar hadoop-mapreduce-examples-2.10.1.jar wordcount ~/input/data.txt  ~/output 
    

2.3 查看结果

cd ~/output
ll
cat part-r-00000

Hadoop单机模式参考:Hadoop安装(二)—单机模式

三、Hadoop伪分布模式

在配置好java和hadoop环境变量的条件下开始一下操作

3.1 修改主机名

  • 查看主机地址

    ip addr
    
  • 查看主机名

    hostname
    
  • 修改主机名

    将原有的内容替换为 hadoop01

    vim /etc/hostname
    
  • 映射IP地址及主机名 修改/etc/hosts文件

    vim /etc/hosts
    

    打开文件后 在最后一行追加

    192.168.231.130 hadoop01
    
  • 重启使修改生效

    reboot
    
  • 再次查看主机名

    hostname
    

3.2 设置免密登录

在伪分布中可以设置也可以不设置

# 生成秘钥对
# rsa表示加密算法,输入以下命令后连续回车,系统会自动在~/.ssh目录下生成公钥(id_rsa.pub)和私钥(id_rsa)
ssh-keygen -t rsa
# 通过命令查看
ls ~/.ssh
# 追加公钥 将公钥追加到~/.ssh/authorized_keys文件中
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop01
# 查看认证文件authorized_keys是否已经生成
ls ~/.ssh
# 免密登录验证
ssh hadoop01
# 退出登录,路由地址会变回原来的的地址
exit

3.3 关闭防火墙

每一步都要执行

  • 查看防火墙状态

    systemctl status firewalld
    
  • 暂时关闭防火墙

    systemctl stop firewalld
    
  • 永久关闭防火墙

    systemctl disable firewalld
    
  • 再次查看防火墙状态

    systemctl status firewalld
    

    参考资料:Linux关闭防火墙命令

3.4 设置Hadoop配置文件

安装Hadoop伪分布式模式,总共有5个文件需配置,它们分别是hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml。这些配置文件都在 ${HADOOP_HOME}/ etc/hadoop 目录下。

3.4.0 进入Hadoop配置文件所在的目录
cd ${HADOOP_HOME}/etc/hadoop
3.4.1 配置hadoop-env.sh
vim hadoop-env.sh

找到 export JAVA_HOME 一行,配置jdk的安装目录

在这里插入图片描述

在这里插入图片描述

export JAVA_HOME=/usr/local/jdk
3.4.2配置core-site.xml

fs.defaultFS属性指定默认文件系统的URI地址,一般格式为“hdfs://host:port”。其中,host可以设置为操作系统的IP地址以及主机名称中的任意一个,这里设置为主机名hadoop01;port如果不配置,则使用默认端口号8020。

hadoop.tmp.dir指定Hadoop的临时工作目录,设置为home/hadoop/tmp,<用户名>请根据实际情况修改。注意:一定要配置hadoop.tmp.dir,否则默认的tmp目录在/tmp下,重启操作系统时tmp目录下的dfs/name文件夹会被删除,造成没有NameNode。

vim core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>    
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop01:8020</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/hadoop/tmp</value>
    </property>
</configuration>
3.4.3 配置hdfs-site.xml

dfs.replication的默认值是3,因为伪分布式只有一个节点,所以值设置为1。

vim hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>
3.4.4 配置mapred-site.xml
  • 复制mapred-site.xml.template文件生成mapred-site.xml,查看是否复制成功
cp mapred-site.xml.template mapred-site.xml
ls
  • 修改mapred-site.xml

mapreduce.framework.name默认值为local,设置为yarn,让MapReduce程序运行在YARN框架上。

vim mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>
3.4.5 配置yarn-site.xml

yarn.resourcemanager.hostname属性为资源管理器的主机,设置为操作系统的主机名或IP地址。

yarn.nodemanager.aux-services属性为节点管理器的辅助服务器,默认值为空,设置为mapreduce_shuffle。

vim yarn-site.xml
<?xml version="1.0"?>
<configuration>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop01</value>
        <!-- 以上主机名或IP地址按实际情况修改 -->
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>

3.5 格式化hdfs

格式化的过程是创建初始目录和文件系统结构的过程。注意:格式化只需进行一次,下次启动不要再次格式化,否则会少NameNode进程。

hdfs namenode -format
# 或
hadoop namenode -format

:在下一步启动的过程中,如果出现没有NameNode, 那就回过头来这样搞

  • 删除原目录,即core-site.xml下配置的hadoop.tmp.dir所指向的目录

  • 重新格式化NameNode: hdfs namenode -format

参考:关于Hadoop启动之后jps没有namenode节点的解决方法

3.6 启动Hadoop并验证Hadoop进程

  • 启动HDFS

    start-dfs.sh
    
  • 查看HDFS进程

    jps
    # 会有以下进程出现
    NameNode
    DataNode
    SecondaryNameNode
    
  • 启动YARN

    start-yarn.sh
    
  • 查看进程

jps
# 会新增以下进程
ResourceManager
NodeManager
  • 还可以使用

    start-all.sh  # 启动所有进程
    stop-all.sh   # 关闭所有进程
    

3.7 Web 访问Hadoop

  • HDFS 界面

    http://192.168.231.130:50070

  • 查看SecondaryNameNode

    http://192.168.231.130:50090

  • YARN 界面

    http://192.168.231.130:8088

3.9 测试Hadoop

3.9.1 计算pi圆周率
cd ${HADOOP_HOME}/share/hadoop/mapreduce
 #计算pi圆周率
 hadoop jar hadoop-mapreduce-examples-2.10.1.jar pi 1 2
3.9.2 词频统计测试

通过一个MapReduce程序测试Hadoop,统计HDFS中/input/data.txt文件内单词出现的次数。

  • 在根目录创建

    cd ~
    vim data.txt
    
  • 输入

    Hello World
    Hello Hadoop
    
  • 在HDFS创建input文件夹

    hdfs dfs -mkdir /input
    
  • 将data.txt上传到HDFS

    hdfs dfs -put data.txt /input
    
  • 查看是否上传成功

    hdfs dfs -ls /input
    
  • 运行MapReduce WordCount例子

    cd ${HADOOP_HOME}/share/hadoop/mapreduce
    hadoop jar hadoop-mapreduce-examples-2.10.1.jar wordcount /input/data.txt /output
    
  • 查看结果

    hdfs dfs -cat /output/part-r-00000
    

Hadoop伪分布安装的参考:Hadoop安装(二)—伪分布式模式

四、Hadoop完全分布

4.0 准备三台虚拟机

三台均已配置好java和hadoop环境变量

hadoop001 192.168.231.135

hadoop002 192.168.231.136

hadoop003 192.168.231.137

4.1 修改主机名

修改 /etc/hostname 和 /etc/hosts

  • 修改第一台主机

    • 打开hostname文件

      vi /etc/hostname
      

      用 hadoop001 替换里面的内容

    • 重启该主机

      reboot
      
    • 查看主机名

    hostname

    
    
  • 修改第二台

    …hadoop002…

  • 修改第三台

    …hadoop003…

4.2 设置IP地址映射

  • 打开hosts文件
vi /etc/hosts
  • 每一台主机的/etc/hosts文件都追加上一下内容
192.168.231.135 hadoop001
192.168.231.136 hadoop002
192.168.231.137 hadoop003
  • 然后重启每一台主机
reboot

4.3 设置免密登录

4.3.1 配置hadoop001主机
  • hadoop001生成秘钥对

    执行后 回车回车回车…

    ssh-keygen -t rsa
    
  • 查看秘钥对

    ls ~/.ssh
    
  • 将hadoop001公钥id_rsa.pub复制到hadoop001、hadoop002和hadoop003主机上

    看到yes\no就输入yes 看到密码就输入登录密码

    ssh-copy-id -i  ~/.ssh/id_rsa.pub hadoop001
    ssh-copy-id -i  ~/.ssh/id_rsa.pub hadoop002
    ssh-copy-id -i  ~/.ssh/id_rsa.pub hadoop003
    
4.3.2 配置hadoop002主机
  • hadoop002生成秘钥对

    ssh-keygen -t rsa
    
  • 查看秘钥对

    ls ~/.ssh
    
  • 将hadoop002公钥id_rsa.pub复制到hadoop001、hadoop002和hadoop003主机上

    ssh-copy-id -i  ~/.ssh/id_rsa.pub hadoop001
    ssh-copy-id -i  ~/.ssh/id_rsa.pub hadoop002
    ssh-copy-id -i  ~/.ssh/id_rsa.pub hadoop003
    
4.3.3 配置hadoop003主机
  • hadoop003 生成秘钥对

    ssh-keygen -t rsa
    
  • 查看秘钥对

    ls ~/.ssh
    
  • 将hadoop003公钥id_rsa.pub复制到hadoop001、hadoop002和hadoop003主机上

    ssh-copy-id -i  ~/.ssh/id_rsa.pub hadoop001
    ssh-copy-id -i  ~/.ssh/id_rsa.pub hadoop002
    ssh-copy-id -i  ~/.ssh/id_rsa.pub hadoop003
    

免密登录配置完毕

  • 可以用 ssh 主机名 进入任意一台主机
  • exit 退出进入的主机

4.4 关闭防火墙

每一台主机每一步都要执行

  • 查看防火墙状态

    systemctl status firewalld
    
  • 暂时关闭防火墙

    systemctl stop firewalld
    
  • 永久关闭防火墙

    systemctl disable firewalld
    
  • 再次查看防火墙状态

    systemctl status firewalld
    
  • 重启一下吧

    reboot
    

    参考资料:Linux关闭防火墙命令

4.5 设置Hadoop配置文件

hadoop001

  • 进入hadoop001主机Hadoop配置文件目录

    cd ${HADOOP_HOME}/etc/hadoop
    
4.5.1 配置hadoop-env.sh
  • 打开hadoop-env.sh

    vi hadoop-env.sh
    

    找到export JAVA_HOME=这一行,值为java的安装路径

    export JAVA_HOME=/usr/local/jdk
    
4.5.2 配置core-site.xml

fs.defaultFS属性指定默认文件系统的URI地址,一般格式为“hdfs://host:port”。其中,host可以设置为操作系统的IP地址以及主机名称中的任意一个,这里设置为主机名hadoop001;port如果不配置,则使用默认端口号8020。

hadoop.tmp.dir指定Hadoop的临时工作目录,设置为home/hadoop/tmp,<用户名>请根据实际情况修改。注意:一定要配置hadoop.tmp.dir,否则默认的tmp目录在/tmp下,重启操作系统时tmp目录下的dfs/name文件夹会被删除,造成没有NameNode。

vi core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>    
	<property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop001:8020</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/hadoop/tmp</value>
    </property>
</configuration>
4.5.3 配置hdfs-site.xml

dfs.replication的默认值是3,因为完全分布式有2个datanode,所以值设置为2。

vi hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
</configuration>
4.5.4 配置mapred-site.xml
  • 复制mapred-site.xml.template文件生成mapred-site.xml,查看是否复制成功
cp mapred-site.xml.template mapred-site.xml
# 查看是否复制成功
ll
  • 修改mapred-site.xml文件内容

mapreduce.framework.name默认值为local,设置为yarn,让MapReduce程序运行在YARN框架上。

vi mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>
4.5.5 配置yarn-site.xml

yarn.resourcemanager.hostname属性为资源管理器的主机,设置为Ubuntu操作系统的主机名或IP地址。
yarn.nodemanager.aux-services属性为节点管理器的辅助服务器,默认值为空,设置为mapreduce_shuffle。

vi yarn-site.xml
<?xml version="1.0"?>
<configuration>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop001</value>
        <!-- 以上主机名或IP地址按实际情况修改 -->
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>
4.5.6 配置slavers文件

配置slavers文件就是指定哪些主机是Slaver

  • 打开文件

    vi slaves
    
  • 将原有内容替换为以下内容

    hadoop002
    hadoop003
    
4.5.7 分发配置

将hadoop001的配置文件分发至hadoop002和hadoop003主机。

将${HADOOP_HOME}/etc/hadoop 目录 全部分发到其他主机的 /etc目录下 覆盖原来的 hadoop目录

scp -r 要分发的文件 主机名:hadoop安装路径/etc/

scp -r /usr/local/hadoop/etc/* hadoop002:/usr/local/hadoop/etc/
scp -r /usr/local/hadoop/etc/* hadoop003:/usr/local/hadoop/etc/

4.6 格式化HDFS

在hadoop001主机操作,命令如下

hdfs namenode -format

4.7 启动Hadoop

启动命令只需在hadoop001主机操作

可以这样启动

start-dfs.sh
start-yarn.sh

还可以这样

start-all.sh

4.8 验证Hadoop进程

  • 用 jps命令分别在所有主机验证

    jps
    
  • hadoop001主机包含以下3个进程表示启动Hadoop成功

    SecondaryNameNode
    NameNode
    ResourceManager
    
  • hadoop002和hadoop003主机包含以下2个进程表示启动Hadoop成功

    NodeManager
    DataNode
    

如果某个主机少了某个进程,应该到对应主机去找相关的log查看原因,log存放在$ {HADOOP_HOME}/logs目录下,如果少DataNode进程,进入该主机下$ {HADOOP_HOME}/logs 查看

…datanode…log。找相关问题

4.9 通过Web访问Hadoop

  • HDFS Web界面

    http://192.168.231.135:50070

  • SecondaryNameNode

    http://192.168.231.135:50090

  • YARN Web界面

    http://192.168.231.135:8088

4.10 测试Hadoop

通过一个MapReduce程序测试Hadoop,统计HDFS中/input/data.txt文件内单词出现的次数

  • 在根目录下,创建一个文本文件data.txt

    cd ~
    vi data.txt
    
  • 在data.txt文件中输入如下内容

    Hello World
    Hello World
    
  • 在HDFS创建input文件夹

    hdfs dfs -mkdir /input
    
  • 将data.txt上传到HDFS

    hdfs dfs -put data.txt /input
    
  • 查看是否上传成功

    hdfs dfs -ls /input
    
  • 运行MapReduce WordCount例子

    cd ${HADOOP_HOME}/share/hadoop/mapreduce
    hadoop jar hadoop-mapreduce-examples-2.10.1.jar wordcount /input/data.txt /output
    
  • 查看结果

    hdfs dfs -cat /output/part-r-00000
    

Hadoop完全分布参考:Hadoop安装(二)—完全分布式模式(集群模式)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值