Hadoop完全分布式部署

Hadoop完全分布式部署

环境配置

Vmware Workstation 15.0 + CentOS 7.0
Jdk-1.8.0 + Hadoop-2.7.7
Eclipse Java EE IDE for Web Developers 2018-09
XShell + Xftp
以上全部从官网安装
hadoop-eclipse-plugin-2.7.7.jar

安装CentOS

  1. 正常安装流程
  2. 关闭防火墙
systemctl stop firewalld.service 
  1. jdk配置过程
    原因在于自带的openjdk没有jps,所以需要更换。
#搜索jdk包
rpm -qa|grep jdk
#一个个删除
rpm -e --nodeps xxxxx
#验证删除干净
java -version
#解压jdk,并设置路径
vim /etc/profile
export JAVA_HOME="/opt/jdk1.8.0_251"
export PATH=$JAVA_HOME/bin:$PATH
#配置生效
source /etc/profile

集群配置

  1. 克隆虚拟机并配置网络
    此时是最容易出错的地方。克隆后先配置静态IP地址,主机地址为192.168.195.1,所以采取设置为同网段,方便后续的管理连接。同时为了保证顺畅,最好把内存都调成2G左右。然后根据该配置进行调整。
master192.168.195.181
slave1192.168.195.182
slave2192.168.195.183
#删除规则
cd /etc/udev/rules.d/
rm -f 70-persistent-ipoib.rules
#具体路径根据自己虚拟机的网卡选择
vim /etc/sysconfig/network-scripts/ifcfg-ens33

在这里插入图片描述
此处主要更改BOOTPROTO=static;添加HWADDR为MAC地址;删除UUID那一行,其用于唯一识别设备;ONBOOT=yes。

在这里插入图片描述

  1. 主机名修改与配置
#指定主机名
hostnamectl set-hostname xxxx(如master)
#文件内修改主机名
vim /etc/sysconfig/network
NETWORKING=yes      
HOSTNAME=xxxx   
#写全映射
vim /etc/hosts
192.168.195.181 master
192.168.195.182 slave1
192.168.195.183 slave2
#重启网络
service network restart
  1. 设置ssh免密登录,在每个节点对其他节点都操作一次
ssh-keygen
cd ~
ssh-copy-id -i .ssh/id_rsa.pub object#object为root@指定的主机名
  1. hdfs环境配置
    解压hadoop,然后修改几个路径。此时都在master节点操作。
vim /etc/profile
export HADOOP_HOME="/opt/hadoop-2.7.7"
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
#接下来修改hadoop路径
cd /opt/hadoop-2.7.7/etc/hadoop/
vim hadoop-env.sh
export JAVA_HOME="/opt/jdk1.8.0_251"
export HADOOP_HOME="/opt/hadoop-2.7.7"
export HADOOP_CONF_DIR="/opt/hadoop-2.7.7/etc/hadoop"
<!--接下来的xml都在当前目录下。core-site.xml-->
<configuration>
<property>
<!--HDFS address,namenode节点-->
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<!--Hadoop tmp directory,存储dfs数据-->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/data/tmp</value>
</property>
</configuration>
<!--hdfs-site.xml-->
<configuration>
<!--namenode http,web界面-->
<property>
<name>dfs.namenode.http-address</name>
<value>master:50070</value>
</property>
<!--辅助节点设置,此时如果设置为master,
则master将兼任namenode与secondary node-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>slave1:50090</value>
</property>
<!--namenode path-->
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/data/namenode</value>
</property>
<!--datanode path-->
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/data/datanode</value>
</property>
<!--number of back,根据具体需要设置副本数目-->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
<!--mapred-site.xml-->
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.application.classpath</name>
        <value>
        /opt/hadoop-2.7.7/etc/hadoop,
        /opt/hadoop-2.7.7/share/hadoop/common/*,
        /opt/hadoop-2.7.7/share/hadoop/common/lib/*,
        /opt/hadoop-2.7.7/share/hadoop/hdfs/*,
        /opt/hadoop-2.7.7/share/hadoop/hdfs/lib/*,
        /opt/hadoop-2.7.7/share/hadoop/mapreduce/*,
        /opt/hadoop-2.7.7/share/hadoop/mapreduce/lib/*,
        /opt/hadoop-2.7.7/share/hadoop/yarn/*,
        /opt/hadoop-2.7.7/share/hadoop/yarn/lib/*
        </value>
    </property>
</configuration>
<!--yarn-site.xml-->
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value>
    </property>
    <property>
        <description>The http address of the RM web application.</description>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>${yarn.resourcemanager.hostname}:8088</value>
    </property>
    <property>
        <description>The address of the applications manager interface in the RM.</description>
        <name>yarn.resourcemanager.address</name>
        <value>${yarn.resourcemanager.hostname}:8032</value>
    </property>
 <property>
        <description>The address of the scheduler interface.</description>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>${yarn.resourcemanager.hostname}:8030</value>
    </property>
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>${yarn.resourcemanager.hostname}:8031</value>
    </property>
    <property>
        <description>The address of the RM admin interface.</description>
        <name>yarn.resourcemanager.admin.address</name>
        <value>${yarn.resourcemanager.hostname}:8033</value>
    </property>
</configuration>
  1. 配置同步:使用scp命令拷贝文件夹
  2. 集群格式化并启动
hdfs namenode –format
#如果结果返回0说明成功格式化,否则根据报错更改错误
cd /opt/hadoop-2.7.7/sbin
start-dfs.sh && start-yarn.sh
#如果只开启了dfs则会没有manager后缀的jps

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

web查看

在主机建立映射,则可以在主机访问web页面
在这里插入图片描述
访问web的端口参照上面配置的内容
在这里插入图片描述
可以看到当前的节点状态
在这里插入图片描述
这边记录了dfs数据的情况,与linux上查看的内容一致
在这里插入图片描述
在这里插入图片描述

eclipse连接

必须使用管理员模式运行,不然运行程序时会报错。配置hadoop时参照端口与web页面一致
在这里插入图片描述
尝试运行网上代码的一次结果。
在这里插入图片描述

在这里插入图片描述

结语

基本的配置到这里就结束了。
本来是参考这篇文章在windows上部署的,但是后期发现网上基本上都是单节点的部署,还需要后期自己添加ip并添加节点。
然后尝试了使用docker来搭建。虽然成功搭起了分布式集群而且也方便,但是可能因为防火墙以及组网配置的问题,导致主机ping不通内网的容器,修改了很久也没改成。不过感觉这种应该是最好的实验环境,可以具体参照这篇文章进行理解。但有个点在于每次重启都要重新配置环境,不写脚本还是比较麻烦的。

最后贴两个不错的文章:
https://www.cnblogs.com/edisonchou/p/edc_hadoop_study_series_index.html
https://www.cnblogs.com/along21/p/10496468.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值