在CentOS7上安装Hadoop分布式系统

  1. 项目背景:

Hadoop原来是Apache Lucene下的一个子项目,它最初是从Nutch项目中分离出来的专门负责分布式存储以及分布式运算的项目。简单地说来,Hadoop是一个可以更容易开发和运行处理大规模数据的软件平台。Hadoop由分布式存储HDFS和分布式计算MapReduce两部分组成。HDFS是一个master/slave的结构,就通常的部署来说,在master上只运行一个Namenode,而在每一个slave上运行一个Datanode。

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。主要解决,海量数据的存储和海量数据的分析计算问题。广义上来说, Hadoop 通常是指一个更广泛的概念 —— Hadoop 生态圈 。

 

项目需求:

(1)功能需求:可以使用root用户搭建和管理hdfs。三台机器的防火墙必须是关闭的。确保三台机器的网络配置畅通(NAT模式,静态IP,主机名的配置) ;确保/etc/hosts文件配置了ip和hostname的映射关系;确保配置了两台台机器;免密登陆认证(克隆会更加方便);确保所有机器时间同步;jdk和hadoop的环境变量配置。

(2)经济分析: 首先,Hadoop集群的确是一个高性价比的解决方案。其次,它所需的软件是开源的,这样就可以降低成本。可以自由下载Apache Hadoop发行版。最后,Hadoop集群通过支持商用硬件控制了成本。不必购买服务器级硬件,便可以搭建一个强大的Hadoop集群。

(3)通用性:Hadoop的工作原理在于将数据拆分成片,并将每个“分片”分配到特定的集群节点上进行分析。数据不必均匀分布,因为每个数据分片都是在独立的集群节点上进行单独处理的。

Hadoop集群的并行处理能力能明显提高分析速度,但随着要分析的数据量的增加,集群的处理能力可能会收到影响。可以通过添加额外的集群节点方式,来有效的扩展集群。

(4)安全性:不能损害集群的功能,架构一致,不能和Hadoop架构冲突,能够解决安全的威胁

软件架构:

WinSCP:开源图形化SFTP客户端,是一个Windows环境下使用SSH的开源图形化SFTP客户端。同时支持SCP协议。它的主要功能就是在本地与远程计算机间安全的复制文件。.winscp也可以链接其他系统,比如linux系统。

操作系统:win11;

虚拟软件:VMware

虚拟机系统:CentOS7

虚拟机:主机名:master IP:192.068.181.130

主机名:slave1 IP:192.168.181.131

软件包存储路径:/home/lq

JDK:使用Java1.8版本

Hadoop:hadoop -3.3.4

用户:root

 

使用技术

熟练掌握Linux指令,以及HDFS的结构模型管理数据。

项目实现

5.1 搭建集群前的准备工作:

·首先对传输过来的Hadoop文件解压生成如图的目录:

deb206aa76b24f29912e1ff038efa643.png

·安装ssh

yum install openssh*

 安装成功:

561ed44bf55e4ed6b0462a6b9011ff0d.png

 启动ssh服务,查看状态

systemctl enable sshd

systemctl status sshd


a4eb01b15bf34a0291aecf3a30c0de2b.png

 验证ssh能否正常启动

ssh localhost

4ba67af265684683ab7e5a823d9bb56f.png

 生成key

cd ~/

ssh-keygen -t rsa -P '' -f ~/.ssh/id_dsa

cd .ssh

cat id_dsa.pub >>authorized_keys

d6b789edad8d44cf936511d376c03d9d.png

 在.ssh目录下查看key是否生成

fa048ab39e0a4791a2c8d92d4330a1b8.png

 

·安装JDK

使用java1.8版本

yum -y install java-1.8.0-openjdk* 

·找到java的安装路径 

whereis javac 

63e5a48758614fc9833e297cd597c939.png

 ·Java真实路径:

ll /usr/bin/javac

ll /etc/alternatives/javac

ll /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/bin/javac

 09ec4bc00b9b404da72678c0d098241a.png

 ·配置hadoop和java的环境

 ·打开hadoop-env.sh

e384d82d1e66425eae27cdc0a2bdb3a4.png

 在文件末尾输入一下内容进行环境配置:

HDFS_DATANODE_USER=root ​‘

HDFS_NAMENODE_USER=root ​

HDFS_SECONDARYNAMENODE_USER=root ​ YARN_RESOURCEMANAGER_USER=root ​

YARN_NODEMANAGER_USER=root

vim ~/.bashrc  

 在文本末尾添加以下内容

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64 export HADOOP_HOME=/usr/local/hadoop export PATH=$HADOOP_HOME/bin:$JAVA_HOME/bin:$PATH  

ded8803abb6a4c14a793c73191c4b8e4.png

 运行文件:

source ~/.bashrc  

·关闭防火墙以及seLinux 

systemctl stop firewalld

setenforce 0

 

 

a7e34671edde47fc881da534571163c1.png

 2173f6419d5f458bba733b55cb0218b7.png

 · 通过创建快照对现有主机进行拍照快照,通过快照克隆第二个虚拟机。

5.2搭建Hadoop分布式系统:

·修改主机名称:(两台主机均实现)

vim /etc/hostname

vim /etc/hosts

d145904170cd4cefa7fad836f3aa03e7.png

 在主节点下将hostname的内容改为:master

在另一台主机下的hostname改为:slave1

修改网络映射:

        所有的虚拟机都进行如下操作:

vim /etc/hosts

[master主机的IP] master

[slave1主机的IP] slave1  

·配置hadoop在/usr/local/hadoop/etc/hadoop目录下:

        配置core-site.xml:

<configuration> 
  <property> 
    <name>fs.defaultFS</name> 
    <value>hdfs://master:9000</value> 
  </property> 
  <property> 
    <name>hadoop.tmp.dir</name> 
    <value>file:/usr/local/hadoop/tmp</value> 
  </property> 
</configuration>

         配置 /etc/profile

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64 export HADOOP_HOME=/usr/local/hadoop export PATH=$HADOOP_HOME/bin:$JAVA_HOME/bin:$PATH

        配置hdfs-site.xml:

<configuration> 
  <property> 
    <name>dfs.replication</name> 
    <value>2</value> 
  </property> 
  <property> 
    <name>dfs.namenode.name.dir</name> 
    <value>file:/usr/local/hadoop/tmp/dfs/name</value> 
  </property>
  <property> 
    <name>dfs.datanode.data.dir</name> 
    <value>file:/usr/local/hadoop/tmp/dfs/data</value> 
  </property>
</configuration>

         配置mapred-site.xml:

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

         配置yarn-site.xml:

<configuration>
  <property>
      <name>yarn.resoucemanager.hostname</name>
      <value>master</value>
  </property>
  <property>
      <name>yarn.nodemanager.aux-services</name>
      <value>mapreduce_shuffle</value>
  </property>
</configuration>

         修改workers文件,添加以下内容:

master
slave1

        同步文件,利用scp指令实现将master节点的环境配置复制到slave1节点:

scp -r /usr/local/hadoop/etc/hadoop/workers root@slave1:/usr/local/hadoop/etc/hadoop/
scp -r /usr/local/hadoop/etc/hadoop/core-site.xml root@slave1:/usr/local/hadoop/etc/hadoop/
scp -r /usr/local/hadoop/etc/hadoop/hdfs-site.xml root@slave1:/usr/local/hadoop/etc/hadoop/
scp -r /usr/local/hadoop/etc/hadoop/mapred-site.xml root@slave1:/usr/local/hadoop/etc/hadoop/
scp -r /usr/local/hadoop/etc/hadoop/yarn-site.xml root@slave1:/usr/local/hadoop/etc/hadoop/
scp -r /etc/profile root@slave1:/etc/profile

· 重启虚拟机

·格式化文件系统

hdfs namenode -format

ae386c99c25e4c1482f5d3e3bda50b00.png ·启动HDFS 

 369d61771ba44b2884bcdef7e0ffaede.png

·修改网络为静态

cd /etc/sysconfig/network-scripts/

vim ifcfg-ens33

 将BOOTPROTO状态改为"static",在后续添加主机IP地址,网关地址,子网掩码,DNS1,DNS2

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="ad427e49-302c-4724-813f-d0f07cac5a5f"
DEVICE="ens33"
ONBOOT="yes"

IPADDR=192.168.181.130
GATEWAY=192.168.181.2
NETMASK=255.255.255.0
DNS1=218.4.4.4
DNS2=8.8.8.8

 在命令行格式下可以ping通即为,修改正常:

eb32bea3cd7a44f6b3ae35fbe2f2072d.png

 ·通过浏览器查看:

在网址输入框内输入192.168.181.130:9870(我的主机IP+端口号)查看两个节点运行正常:

847cda41701f4ad487689e4ec384f130.png

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值