热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ApacheHadoop2.8.0伪分布式环境搭建

ApacheHadoop是一个支持数据密集型分布式应用程序的开源软件框架,能在大型集群上运行应用程序。Hadoop框架实现了MapReduce编程范式,

Apache Hadoop 是一个支持数据密集型分布式应用程序的开源软件框架,能在大型集群上运行应用程序。Hadoop 框架实现了 MapReduce 编程范式,把应用程序分成许多小部分,每个部分能在任意节点上运行。并且 Hadoop 提供了分布式文件系统存储所有计算节点的数据,为集群带来非常高的带宽。


1 Hadoop 是什么?

Apache Hadoop 是一个支持数据密集型分布式应用程序的开源软件框架,能在大型集群上运行应用程序。Hadoop 框架实现了 MapReduce 编程范式,把应用程序分成许多小部分,每个部分能在任意节点上运行。并且 Hadoop 提供了分布式文件系统存储所有计算节点的数据,为集群带来非常高的带宽。


2 搭建说明

本文几乎所有操作都需要在三台服务器上进行同样的操作,所以为了便于表示,在需要三台服务器上进行同样操作的时候会使用 x3 进行标注。

命令当中的 # 代表 root 用户执行。
命令当中的 $ 代表 hadoop 用户执行。
### 为该命令的注释。
注:可在一台机子上配置好后利用 scp 命令进行复制,若在虚拟机则可直接复制虚拟机。


2.1 节点机器配置


NodeNameOSCPURAMDiskIP
NameNodeCentOS 7.2E7-4830 v3 @ 2.10GHz x22G100G192.168.1.69
DataNode1CentOS 7.2E7-4830 v3 @ 2.10GHz x22G500G192.168.1.70
DataNode2CentOS 7.2E7-4830 v3 @ 2.10GHz x22G500G192.168.1.7

2.2 软件包版本


SoftwareVersion
JDKOracle JDK 1.8.0_131(非OpenJDK)
Hadoop2.8.0

3 安装JDK x3

# mkdir -p /usr/local/java
# cd /usr/local/java
# wget http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz
# tar -xvzf jdk-8u131-linux-x64.tar.gz

### 设置新的 JDK 为默认 JDK,如果机器已经安装 OpenJDK,可能需要先卸载。
# echo "export JAVA_HOME=/usr/local/java/jdk1.8.0_131/" >> /etc/profile
# echo "export PATH=$PATH:$JAVA_HOME/bin" >> /etc/profile
# source /etc/profile

# $JAVA_HOME/bin/java -version ### 测试运行

java version "1.8.0_131"Java(TM) SE Runtime Environment (build 1.8.0_131-b11)Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

4 关闭防火墙 x3

直接关闭整个防火墙不是一个明智的选择,在具体环境中应该挑选出需要的端口,进行放行,本文由于篇幅原因,不再详细讨论,故采用直接关闭防火墙的方法。

# systemctl stop firewalld.service
# systemctl disable firewalld.service

5 配置 hostname 及局域网映射 x3

# hostnamectl set-hostname namenode ### 为 namenode 节点设置 hostname
# hostnamectl set-hostname datanode1 ### 为 datanode1 节点设置 hostname
# hostnamectl set-hostname datanode2 ### 为 datanode2 节点设置 hostname
# echo "192.168.1.69 namenode" >> /etc/hosts
# echo "192.168.1.70 datanode1" >> /etc/hosts
# echo "192.168.1.71 datanode2" >> /etc/hosts

6 创建 hadoop 用户以及 hadoop 用户组 x3

# groupadd hadoop
# useradd -m -g hadoop hadoop
# passwd hadoop

7 SSH 免密登录

Hadoop 在 namenode 节点中使用 ssh 来访问各节点服务器,例如开启或关闭 hadoop。显然在大型集群中,不可能手动逐个输入密码,在这种情况下,我们可以利用 ssh-agent 代理我们输入密码。
注:该设置只需要在 namenode 节点设置。


7.1 ssh-agent

配置 ssh-agent 开机自动运行

# echo 'eval $(ssh-agent)' >> /etc/profile
# source /etc/profile

7.2 配置免密登录

在 namenode 节点上登录 hadoop 用户

$ ssh-keygen -t rsa -f ~/.ssh/id_rsa ### 输入密钥
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 644 ~/.ssh/authorized_keys
$ ssh-copy-id datanode1 ### 将公钥 copy 到 datanode1
$ ssh-copy-id datanode2 ### 将公钥 copy 到 datanode2
$ ssh-add ~/.ssh/id_rsa ### 使用 ssh-agent 实现免密登录
$ ssh datanode1 ### 测试无需密码即可登录 datanode1

8 磁盘挂载(可选) x3

# mkdir /home/hadoop/hdfs
# mount /dev/sdb1 /home/hadoop/hdfs/
# chown -R hadoop:hadoop /home/hadoop/hdfs/
# echo "/dev/sdb1 /home/hadoop/hdfs ext4 defaults 0 0" >> /etc/fstab

9 安装 Hadoop x3

# cd /usr/local
# wget https://mirrors.scau.edu.cn/hadoop/hadoop-2.8.0.tar.gz ### 使用自己的镜像源
# wget https://mirrors.ustc.edu.cn/apache/hadoop/common/hadoop-2.8.0/hadoop-2.8.0.tar.gz
# tar -xvzf hadoop-2.8.0.tar.gz
# chown -R hadoop:hadoop hadoop-2.8.0

10 配置 Hadoop x3

复制默认配置文件,在升级 hadoop 版本时可独立出来。

$ mkdir ~/config/
$ cp -r /usr/local/hadoop-2.8.0/etc/hadoop/ ~/config/

指定 hadoop 运行所使用的 JDK 与配置目录, vim ~/config/hadoop/hadoop-env.sh

$ export JAVA_HOME=/usr/local/java/jdk1.8.0_131/
$ export HADOOP_CONF_DIR=/home/hadoop/config/hadoop/
# echo "export HADOOP_CONF_DIR=/home/hadoop/config/hadoop/" >> /etc/profile ### 最好将该环境变量也加入 /etc/profile

10.1 log 存储位置

修改 hadoop log 存储位置。

$ echo "export HADOOP_LOG_DIR=~/log/hadoop" >> ~/config/hadoop/hadoop-env.sh

修改 YARN log 存储位置,

$ vim config/hadoop/yarn-env.sh。 ###进行如下修改YARN_LOG_DIR="/home/hadoop/log/yarn/"

10.2 配置 core-site.xml

$ vim ~/config/hadoop/core-site.xml ###进行如下修改

<configuration><property><description>默认文件系统及端口description> <name>fs.defaultFSname><value>hdfs://namenode/value><final>truefinal>property>
configuration>

10.3 配置 hdfs-site.xml

$ vim ~/config/hadoop/hdfs-site.xml ###进行如下修改

<configuration><property><description>namedoe 存储永久性的元数据目录列表description> <name>dfs.namenode.name.dirname><value>/home/hadoop/hdfs/name/value><final>truefinal>property><property><description>datanode 存放数据块的目录列表description> <name>dfs.datanode.data.dirname><value>/home/hadoop/hdfs/data/value><final>truefinal>property>
configuration>

10.4 配置 mapred-site.xml

$ vim ~/config/hadoop/mapred-site.xml ###进行如下修改
<configuration><property> <description>MapReduce 执行框架设为 Hadoop YARN. description> <name>mapreduce.framework.namename> <value>yarnvalue> property><property> <description>Map 和 Reduce 执行的比例&#xff0c;Map 执行到百分之几后开始 Reduce 作业description> <name>mapreduce.job.reduce.slowstart.completedmapsname> <value>1.0value> property>
configuration>

10.5 配置 yarn-site.xml

$ vim ~/config/hadoop/yarn-site.xml ###进行如下修改
<configuration>
<property> <description>The address of the applications manager interface in the RM.description> <name>yarn.resourcemanager.addressname> <value>namenode:8032value> property> <property> <name>yarn.nodemanager.aux-servicesname> <value>mapreduce_shufflevalue> property> <property> <description>存储中间数据的本地目录description><name>yarn.nodemanager.local-dirsname> <value>/home/hadoop/nm-local-dirvalue> <final>truefinal>property> <property> <description>每个容器可在 RM 申请的最大内存description><name>yarn.scheduler.maximum-allocation-mbname> <value>2048value> <final>truefinal>property> <property> <description>每个容器可在 RM 申请的最小内存description><name>yarn.scheduler.minimum-allocation-mbname> <value>300value> <final>truefinal>property> <property><description>自动检测节点 CPU 与 Memdescription> <name>yarn.nodemanager.resource.detect-hardware-capabilitiesname> <value>truevalue> property> <property> <description>The address of the scheduler interface.description> <name>yarn.resourcemanager.scheduler.addressname> <value>namenode:8030value> property> <property> <description>The address of the RM web application.description> <name>yarn.resourcemanager.webapp.addressname> <value>namenode:8088value> property> <property> <description>The address of the resource tracker interface.description> <name>yarn.resourcemanager.resource-tracker.addressname> <value>namenode:8031value> property><property> <description>The hostname of the RM.description> <name>yarn.resourcemanager.hostnamename> <value>namenodevalue> property>
configuration>

10.6 配置 slaves

$ vim ~/config/hadoop/slaves &#xff03;&#xff03;&#xff03;进行如下修改namenode
datanode1
datanode2

11 优化 namenode 节点命令使用

$ echo "export PATH&#61;$PATH:/usr/local/hadoop-2.8.0/bin/:/usr/local/hadoop-2.8.0/sbin/" >> ~/.bash_profile
$ source ~/.bash_profile

12 启动集群及测试

测试之前最好重启一遍三台机器&#xff0c;以确保配置都生效&#xff0c;并且没有其他问题。

登录 namenode 节点

$ ssh-add ~/.ssh/id_rsa ### 验证密钥
$ hadoop namenode -format ### 初始化集群
$ start-dfs.sh ### 启动 HDFS
$ start-yarn.sh ### 启动 YARN

12.1 集群总览


NodeNameWebAddress
namenoteHDFShttp://192.168.1.69:50070
RMhttp://192.168.1.69:8088
NMhttp://192.168.1.69:8042
datanode1HDFShttp://192.168.1.70:50075
NMhttp://192.168.1.70:8042
datanode2HDFShttp://192.168.1.71:50075
NMhttp://192.168.1.71:8042

12.2 测试用例

hadoop 自带了许多测试用例&#xff0c;所以可以很方便的快速测试集群是否搭建成功。

$ yarn jar /usr/local/hadoop-2.8.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.0.jar randomwriter random-data

执行上述命令后&#xff0c;打开 RM 以及 NM 的 URL &#xff0c;查看任务是否被执行&#xff0c;如执行&#xff0c;则搭建成功。


12.3 图片展示

这里写图片描述
这里写图片描述
这里写图片描述


13 总结

本文从零开始搭建了具有三个节点服务器的 Hadoop 集群&#xff0c;示范了 Hadoop 搭建集群的基本配置。并且从中我们可以知道 Hadoop 集群的每台机子的配置几乎是相同的&#xff0c;这是大量重复性的劳动&#xff0c;因此使用 docker 会大大加快集群的部署。文中的配置文件&#xff0c;是我根据我自己的三台服务器的机器硬件所决定的参数&#xff0c;读者应该根据自己的实际情况选择参数的设置&#xff0c;下文的参考资料给出了各种属性的说明以及默认值。


推荐阅读
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • 大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记
    本文介绍了大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记,包括outputFormat接口实现类、自定义outputFormat步骤和案例。案例中将包含nty的日志输出到nty.log文件,其他日志输出到other.log文件。同时提供了一些相关网址供参考。 ... [详细]
  • Java如何导入和导出Excel文件的方法和步骤详解
    本文详细介绍了在SpringBoot中使用Java导入和导出Excel文件的方法和步骤,包括添加操作Excel的依赖、自定义注解等。文章还提供了示例代码,并将代码上传至GitHub供访问。 ... [详细]
  • Hadoop2.6.0 + 云centos +伪分布式只谈部署
    3.0.3玩不好,现将2.6.0tar.gz上传到usr,chmod-Rhadoop:hadophadoop-2.6.0,rm掉3.0.32.在etcp ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了在Linux系统中设置文件ACL权限的方法和使用说明,包括在centos7.3和centos6.9中开启ACL权限的两种方法:在挂载时指定打开ACL权限和修改默认的属性信息。同时提供了对ACL权限的详细解释和应用场景。 ... [详细]
  • 本文介绍了在CentOS 6.4系统中更新源地址的方法,包括备份现有源文件、下载163源、修改文件名、更新列表和系统,并提供了相应的命令。 ... [详细]
  • Vagrant虚拟化工具的安装和使用教程
    本文介绍了Vagrant虚拟化工具的安装和使用教程。首先介绍了安装virtualBox和Vagrant的步骤。然后详细说明了Vagrant的安装和使用方法,包括如何检查安装是否成功。最后介绍了下载虚拟机镜像的步骤,以及Vagrant镜像网站的相关信息。 ... [详细]
  • ZooKeeper 学习
    前言相信大家对ZooKeeper应该不算陌生。但是你真的了解ZooKeeper是个什么东西吗?如果别人面试官让你给他讲讲ZooKeeper是个什么东西, ... [详细]
  • importorg.apache.hadoop.hdfs.DistributedFileSystem;导入方法依赖的package包类privatevoidtestHSyncOpe ... [详细]
author-avatar
傻傻的不敢看结5_749
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有