hadoop完全分布式搭建3台主机(超级详细)

2 篇文章 0 订阅
1 篇文章 0 订阅

文章原地址:hadoop完全分布式搭建3台主机(详细)

主机分配以及地址要求:

角色主机名IP地址
Namenodemaster192.168.222.201
Datanodeslave1192.168.222.202
datanodeslave2192.168.222.203

要求:

  • 正确完成搭建
  • 将数据文件email_log.txt 传至HDFS系统的“/users”中
  • 计算文件email_log.txt 文件中每个数据出现的次数,将最终结果文件重命名为“学号+姓名”

1.关闭防火墙 selinux (都要执行)

1.1关闭防火墙
执行关闭命令: systemctl stop firewalld.service
执行开机禁用防火墙自启命令 : systemctl disable firewalld.service
1.2 关闭selinux
1.2.1 临时关闭

setenforce 0 :用于关闭selinux防火墙,但重启后失效。

setenforce 0
1.2.2永久关闭

修改selinux的配置文件,重启后生效。

打开 selinux 配置文件

vi /etc/selinux/config

修改 selinux 配置文件

将SELINUX=enforcing改为SELINUX=disabled,保存后退出

2. 添加IP与主机名的映射关系 ( 都要修改 )

2.1. 修改主机名(都要修改)

设定主机名与网卡启动、网关配置

vi /etc/sysconfig/network
[root@host1 ~]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=master

需要注意的是Hadoop的集群中的主机名不能有_ (下划线)。如果存在_会导致Hadoop集群无法找到这群主机,从而无法启动!

经过上面的修改,主机名称不会马上改变,必须重启才能生效。

[root@master hadoop]# cat /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain
192.168.222.201 master
192.168.222.202 slave1
192.168.222.203 slave2

改完主节点之后,可以将hosts文件直接传到其他两个节点。

scp /etc/hosts 192.168.222.202:/etc/hosts
scp /etc/hosts 192.168.222.203:/etc/hosts

3.设置免密登录

让Master能够通过SSH无密码登录各个Slave节点

如果修改过主机名,需要重新生成的新的公钥。

3.1方法一
rm -r ~/.ssh
ssh-keygen -t rsa
ssh-copy-id localhost
ssh-copy-id slave1
ssh-copy-id slave2
3.2方法二

在master上执行如下命令:

 cd ~/.ssh       # 如果没有该目录,先执行一次ssh localhost
 rm ./id_rsa*      # 删除之前生成的公匙(如果已经存在)
 ssh-keygen -t rsa    # 执行该命令后,遇到提示信息,一直按回车就可以
 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

接着将master中的id_rsa.pub文件复制到各个Slave节点中

 scp ~/.ssh/id_rsa.pub slave01:/root
 scp ~/.ssh/id_rsa.pub slave02:/root

在各个slave节点中执行如下命令:

 mkdir ~/.ssh    # 如果不存在该文件夹需先创建
 cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
 rm ~/id_rsa.pub  # 用完以后就可以删掉

在master中验证是否可以无密码登录,各个Slave节点。

ssh Slave01 #如果成功登录,则配置完成
ssh Slave02 #如果成功登录,则配置完成

4.安装java环境 + 解压hadoop压缩包

上传gz包,解压
mkdir -p /simple/soft
cd /simple
tar -zxvf /simple/soft/jdk-7u79-linux-x64.tar.gz
tar -zxvf /simple/soft/hadoop-2.4.1.tar.gz

5.修改配置文件

cd /simple/hadoop-2.4.1/etc/hadoop 
5.1 slaves 文件

将文件中原来的 localhost 删除,添加内容:

vi slaves
slave1
slave2
5.2 core-site.xml 文件

内容修改为:

<configuration>
    <!-- 指定HADOOP所使用的文件系统schema(URI)-->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>
    </property>

     <!-- 指定hadoop运行时产生文件的存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/simple/hadoop-2.4.1/tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>
</configuration>
5.3 hdfs-site.xml文件

Hadoop的分布式文件系统HDFS一般采用冗余存储,一份文件通常保存3份副本,所以dfs.replication的值还是设置为3。 具体内容如下:

<configuration>
    <property>
        <!-- 指定SecondaryNamenode所在地址 -->
        <name>dfs.namenode.secondary.http-address</name>
        <value>master:50090</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/simple/hadoop-2.4.1/tmp/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/simple/hadoop-2.4.1/tmp/dfs/data</value>
    </property>
</configuration>
5.4 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>
5.5 yarn-site.xml文件

内容如下:

<configuration>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>
5.6 hadoop-env.sh 文件

修改如下内容:

export JAVA_HOME=/simple/jdk1.7.0_79

# 可以不用
export HADOOP_HOME=/simple/hadoop-2.4.1/

6.设置环境变量

添加Hadoop、java的环境变量

vi /etc/profile
JAVA_HOME=/simple/jdk1.7.0_79
HADOOP_HOME=/simple/hadoop-2.4.1
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH 

刷新环境配置:

source /etc/profile

java环境变量配置完成,测试环境变量是否生效。

echo $JAVA_HOME
java -version 

7.另外两台环境

7.1创建文件夹(另外两台)
mkdir /simple/
7.2发送文件给其他结点
   scp -r hadoop-2.4.1/ slave1:/simple
   scp -r hadoop-2.4.1/ slave2:/simple
   scp -r jdk1.7.0_79/ slave2:/simple
   scp -r jdk1.7.0_79/ slave1:/simple
   scp /etc/profile slave1:/etc/profile
   scp /etc/profile slave2:/etc/profile
7.3刷新另外两台的环境
source /etc/profile
7.4格式化namenode
hadoop namenode -format
7.5启动HDFS
start-dfs.sh
7.6启动Yarn
start-yarn.sh
7.7jps结果
master
2129 SecondaryNameNode
2530 Jps
1948 NameNode
2285 ResourceManager

slave1
1744 NodeManager
1841 Jps
1634 DataNode

slave2
1705 NodeManager
1803 Jps
1598 DataNode

打开浏览器输入 192.168.222.201:50070 与 192.168.222.201:8088 打开web验证页面。



8.操作

8.1.使用CRT把本地计算机中的 email_log.txt ,上传到centos中
8.2.创建文件夹,上传。
hdfs dfs -mkdir /users 
hdfs dfs -put /simple/email_log.txt /users 
8.3.计算文件email_log.txt 文件中每个数据出现的次数,保存到 /user/output 下。
hadoop jar /simple/hadoop-2.4.1/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.4.1.jar wordcount /users/email_log.txt /user/output
 hadoop fs -cat /user/output/part-r-00000 (查看文件内容,文件很长,可以按 CTRL+C 停止)
8.4.修改文件名字为 学号+姓名。
hdfs dfs mv /user/output/part-r-00000 /user/output/18305105+×××
hdfs dfs -ls /user/output (查看文件夹下文件)

在这里插入图片描述

打开网页端,可以查看文件,点击Download下载统计后的文件,如果无法使用slave打开从节点,可以在本地物理机hosts中添加(因为无法解析):

192.168.222.202 slave1

192.168.222.203 slave2

文章原地址:hadoop完全分布式搭建3台主机(详细)

集群规划: 主机名 IP 安装的软件 运行的进程 weekend01 192.168.1.201 jdk、hadoop NameNode、DFSZKFailoverController(zkfc) weekend02 192.168.1.202 jdk、hadoop NameNode、DFSZKFailoverController(zkfc) weekend03 192.168.1.203 jdk、hadoop ResourceManager weekend04 192.168.1.204 jdk、hadoop ResourceManager weekend05 192.168.1.205 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain weekend06 192.168.1.206 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain weekend07 192.168.1.207 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain 说明: 1.在hadoop2.0中通常由两个NameNode组成,一个处于active状态,另一个处于standby状态。Active NameNode对外提供服务,而Standby NameNode则不对外提供服务 仅同步active namenode的状态,以便能够在它失败时快速进行切换。 hadoop2.0官方提供了两种HDFS HA的解决方案,一种是NFS,另一种是QJM。这里我们使用简单的QJM。在该方案中,主备NameNode之间通过一组JournalNode同步元数据 信息,一条数据只要成功写入多数JournalNode即认为写入成功。通常配置奇数个JournalNode 这里还配置了一个zookeeper集群,用于ZKFC(DFSZKFailoverController)故障转移,当Active NameNode挂掉了,会自动切换Standby NameNode为standby状态 2.hadoop-2.2.0中依然存在一个问题,就是ResourceManager只有一个,存在单点故障,hadoop-2.4.1解决了这个问题,有两个ResourceManager,一个是Active,一个 是Standby,状态由zookeeper进行协调
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值