大数据 hadoop完全分布式部署

实现hadoop完全分布式的部署:

准备工作:
1)准备至少3台客户机(关闭防火墙、修改静态ip、修改主机名称、修改主机名和ip映射
2)安装jdk
3)配置环境变量
4)安装hadoop
5)配置环境变量
6)安装ssh
7)配置集群
8)启动测试集群

1、SSH无密码登录

1)配置ssh
(1)基本语法,ssh 另一台电脑的ip地址

[victor@node1 ~]$ ssh node2
Last login: Wed Feb 28 09:39:13 2018
[victor@node2 ~]$ exit
logout
Connection to node2 closed.
[victor@node1 ~]$

(2)ssh server服务(默认有)

[root@node1 ~]# rpm -qa | grep ssh
[root@node1 ~]# yum install -y openssh-server
[root@node1 ~]# service sshd restart
[root@node1 ~]# ssh node2

2)无密钥配置
(1)进入到我的home目录

[victor@node1 ~]$ cd ~/.ssh

(2)生成公钥和私钥

[victor@node1 .ssh]$ ssh-keygen -t rsa

注:敲三个回车,生成id_rsa(私钥)、id_rsa.pub(公钥)两个文件

(3)将公钥拷贝到要免密登录的目标机器上

[victor@node1 .ssh]$ ssh-copy-id node1
[victor@node1 .ssh]$ ssh-copy-id node2
[victor@node1 .ssh]$ ssh-copy-id node3

(4)免密登录原理
在这里插入图片描述
rsync我的配置:
在这里插入图片描述

#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
  echo no args;
  exit;
fi

#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname

#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir

#4 获取当前用户名称
user=`whoami`

#5 循环
for((host=103; host<=104; host++)); do
        #echo $pdir/$fname $user@hadoop$host:$pdir
    echo -e "\n --------------- hadoop$host ----------------"

xjps的配置:

#!/bin/bash

user=`whoami`
for((host=102; host<=104; host++)); do
echo -e "\n================   $user@hadoop$host   ================"
ssh $user@hadoop$host 'jps'
done

hadoop的基本配置文件:

core-site.xml

<!-- 指定HDFS中NameNode的地址 -->
<property>
	<name>fs.defaultFS</name>
	<value>hdfs://node1:9000</value>
</property>

<!-- 指定hadoop运行时产生文件的存储目录 -->
<property>
	<name>hadoop.tmp.dir</name>
	<value>/opt/module/hadoop-2.8.2/data/tmp</value>
</property>

HDFS模块如下
hadoop-env.sh

export JAVA_HOME=/opt/module/jdk1.8.0_144
export HADOOP_LOG_DIR=/opt/module/hadoop/logs

hdfs-site.xml

<!-- 指定HDFS副本的数量 -->
<property>
	<name>dfs.replication</name>
	<value>3</value>
</property>
<!-- 指定secondarynamenode位置 -->
<property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>node3:50090</value>
</property>
  <!-- 关闭HDFS 检查 -->
  <property>
    <name>dfs.permissions.enabled</name>
    <value>false</value>
  </property>

slaves配置文件:(这里配置你自己的三台机器hostname)

node1
node2
node3

尖叫提示: 必须手写保证没有空格,首次编辑用vim编辑器防止出现乱码

Yarn 模块如下

yarn-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144
export YARN_LOG_DIR=/opt/module/hadoop/logs

yarn-site.xml

<!-- reducer获取数据的方式 -->
<property>
	<name>yarn.nodemanager.aux-services</name>
	<value>mapreduce_shuffle</value>
</property>

<!-- 指定YARN的ResourceManager的地址 -->
<property>
	<name>yarn.resourcemanager.hostname</name>
	<value>node2</value>
</property>

Mapreduce 模块如下
mapred-env.sh

export JAVA_HOME=/opt/module/jdk1.8.0_144

mapred-site.xml

<!-- 指定mr运行在yarn上 -->
<property>
	<name>mapreduce.framework.name</name>
	<value>yarn</value>
</property>

配置文件完成后,可以启动集群:
集群启动
1)如果集群是第一次启动,需要格式化namenode

[victor@node1 hadoop-2.8.2]$ bin/hdfs namenode -format

2)启动HDFS

[victor@node1 hadoop-2.8.2]$ sbin/start-dfs.sh

如要查看则:直接输入xjps命令:我的是

[root@hadoop102 hadoop-2.7.2]# xjps

================   root@hadoop102   ================
9078 Jps
7690 NodeManager
7227 NameNode
7340 DataNode

================   root@hadoop103   ================
7360 ResourceManager
8675 Jps
7125 DataNode
7480 NodeManager

================   root@hadoop104   ================
8569 Jps
7084 DataNode
7356 NodeManager
7165 SecondaryNameNode

3)启动yarn

[victor@node2 hadoop-2.8.2]$ sbin/start-yarn.sh

注意:Namenode和ResourceManger如果不是同一台机器,不能在NameNode所在机器上启动 yarn,应该在ResouceManager所在的机器上启动yarn。
启动起来集群,则可以进行一些测试,比如上传文件等。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值