3-3 Hadoop集群完全分布式配置部署
Hadoop集群完全分布式配置部署
下面的部署步骤,除非说明是在哪个服务器上操作,否则默认为在所有服务器上都要操作。为了方便,使用root用户。
1.准备工作
1.1 centOS6服务器3台
手动指定3服务器台以下信息:
hostname |
IP |
mask |
gateway |
DNS |
备注 |
master |
172.17.138.82 |
255.255.255.0 |
172.17.138.1 |
202.203.85.88 |
服务器1 |
slave1 |
172.17.138.83 |
255.255.255.0 |
172.17.138.1 |
202.203.85.88 |
服务器2 |
slave2 |
172.17.138.84 |
255.255.255.0 |
172.17.138.1 |
202.203.85.88 |
服务器3 |
PC |
172.17.138.61 |
255.255.255.0 |
172.17.138.1 |
202.203.85.88 |
Windows PC |
1.2 软件包
hadoop-2.7.6.tar.gz
jdk-8u171-linux-x64.tar.gz
上传到3台服务器的/soft目录下
(下载地址:https://pan.baidu.com/s/1a_Pjl8uJ2d_-r1hbN05fWA)
1.3 关闭防火墙
关闭并检查防火墙
- [root@ ~]# chkconfig iptables off
- [root@ ~]# service iptables stop
- [root@ ~]# service iptables status
1.4 关闭selinux
临时关闭
[root@ ~]# setenforce 0
永久关闭,SELINUX=enforcing改为SELINUX=disabled
[root@ ~]# vi /etc/selinux/config
#SELINUX=enforcing
SELINUX=disabled
1.5 开启sshd,windows下用Xshell连接3台虚拟机,方便配置(复制、粘贴)
[root@ ~]# service sshd start
Windows下用Xshell连接3台虚拟机
(文件下载:https://pan.baidu.com/s/1K052DJT9Pq0xy8XAVa764Q)
1.6 安装JDK
解压jdk
[root@ ~]# mkdir -p /soft/java
[root@ soft]# tar -zxvf jdk-8u171-linux-x64.tar.gz -C /soft/java/
配置环境变量
[root@ soft]# echo -e "\nexport JAVA_HOME=/soft/java/jdk1.8.0_171" >> /etc/profile
[root@ soft]# echo -e "\nexport PATH=\$PATH:\$JAVA_HOME/bin" >> /etc/profile
[root@ soft]# echo -e "\nexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar" >> /etc/profile
[root@ soft]# source /etc/profile
1.7 配置主机域名
1)master 172.17.138.82上操作
[root@ soft]# hostname master
[root@master ~]# vi /etc/hostname master
2)slave1 172.17.138.83上操作
[root@ soft]# hostname slave1
[root@master ~]# vi /etc/hostname
slave1
3)slave2 172.17.138.84上操作
[root@ soft]# hostname slave2
[root@master ~]# vi /etc/hostname
slave2
1.8 配置hosts
3台服务器上都执行
[root@master ~]# echo '172.17.138.82 master' >> /etc/hosts
[root@master ~]# echo '172.17.138.83 slave1' >> /etc/hosts
[root@master ~]# echo '172.17.138.84 slave2' >> /etc/hosts
1.9 ssh免密码登录
master上操作
[root@master home]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
1d:33:50:ac:03:2f:d8:10:8f:3d:48:95:d3:f8:7a:05 root@master
The key's randomart image is:
+--[ RSA 2048]----+
| oo.+.o. |
| ..== E.. |
| o++= o+ |
| . o.=..+ |
| oSo. |
| . . |
| . |
| |
| |
+-----------------+
[root@master home]#
一直enter,信息中会看到.ssh/id_rsa.pub的路径。
[root@master ~]# cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
检查slave1,slave2上/root下,是否有.ssh目录,没有则创建,注意要有ll -a命令
slave1,slave2上操作
[root@ ~]# ll -a /root/
总用量 36
dr-xr-x---. 2 root root 4096 11月 16 17:31 .
dr-xr-xr-x. 18 root root 4096 11月 17 16:49 ..
-rw-------. 1 root root 953 11月 16 17:27 anaconda-ks.cfg
-rw-------. 1 root root 369 11月 17 18:12 .bash_history
-rw-r--r--. 1 root root 18 12月 29 2013 .bash_logout
-rw-r--r--. 1 root root 176 12月 29 2013 .bash_profile
-rw-r--r--. 1 root root 176 12月 29 2013 .bashrc
-rw-r--r--. 1 root root 100 12月 29 2013 .cshrc
-rw-r--r--. 1 root root 129 12月 29 2013 .tcshrc
[root@ ~]# mkdir /root/.ssh
把master上的/root/.ssh/authorized_keys复制到slave1,slave2的/root/.ssh上
master上操作
[root@master ~]# scp /root/.ssh/authorized_keys root@172.17.138.83:/root/.ssh/
[root@master ~]# scp /root/.ssh/authorized_keys root@172.17.138.84:/root/.ssh/
master,slave1,slave2上都操作
[root@master ~]# chmod 700 /root/.ssh
验证
master上操作
ssh
master,ssh slave1,ssh slave2
[root@master .ssh]# ssh slave1
Last failed login: Fri Nov 18 16:52:28 CST 2016 from master on ssh:notty
There were 2 failed login attempts since the last successful login.
Last login: Fri Nov 18 16:22:23 2016 from 192.168.174.1
[root@slave1 ~]# logout
Connection to slave1 closed.
[root@master .ssh]# ssh slave2
The authenticity of host 'slave2 (172.17.138.84)' can't be established.
ECDSA key fingerprint is 95:76:9a:bc:ef:5e:f2:b3:cf:35:67:7a:3e:da:0e:e2.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'slave2' (ECDSA) to the list of known hosts.
Last failed login: Fri Nov 18 16:57:12 CST 2016 from master on ssh:notty
There was 1 failed login attempt since the last successful login.
Last login: Fri Nov 18 16:22:40 2016 from 192.168.174.1
[root@slave2 ~]# logout
Connection to slave2 closed.
[root@master .ssh]# ssh master
Last failed login: Fri Nov 18 16:51:45 CST 2016 from master on ssh:notty
There was 1 failed login attempt since the last successful login.
Last login: Fri Nov 18 15:33:56 2016 from 192.168.174.1
[root@master ~]#
2.配置hadoop集群
下面操作,若无特别指明,均是3台服务器都执行操作。
2.1 解压
[root@master soft]# mkdir -p /soft/hadoop/
[root@master soft]# tar -zxvf hadoop-2.7.6.tar.gz -C /soft/hadoop/
2.2 配置环境
[root@master
~]# vim /root/.bashrc
#HADOOP START
#export HADOOP_HOME=/soft/hadoop
export HADOOP_HOME=/soft/hadoop/hadoop-2.7.6
#HADOOP END
export
PATH=/usr/local/sbin:/usr/local/bin/:/usr/bin:/usr/sbin:/sbin:/bin:/soft/hadoop/hadoop-2.7.6/bin:/soft/hadoop/hadoop-2.7.6/sbin
[root@master ~]# source ~/.bashrc
[root@master hadoop-2.7.6]# source /etc/profile
[root@master hadoop-2.7.6]# hadoop version
Hadoop 2.7.6
Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r baa91f7c6bc9cb92be5982de4719c1c8af91ccff
Compiled by root on 2016-08-18T01:41Z
Compiled with protoc 2.5.0
From source with checksum 2e4ce5f957ea4db193bce3734ff29ff4
This command was run using /soft/hadoop/hadoop-2.7.6/share/hadoop/common/hadoop-common-2.7.6.jar
[root@master hadoop-2.7.6]#
修改hadoop配置文件
hadoop-env.sh,yarn-env.sh增加JAVA_HOME配置
[root@slave2 soft]# echo -e "export JAVA_HOME=/soft/java/jdk1.8.0_171" >> /soft/hadoop/hadoop-2.7.6/etc/hadoop/hadoop-env.sh
[root@slave2 soft]# echo -e "export JAVA_HOME=/soft/java/jdk1.8.0_171" >> /soft/hadoop/hadoop-2.7.6/etc/hadoop/yarn-env.sh
创建目录/hadoop,/hadoop/tmp,/hadoop/hdfs/data,/hadoop/hdfs/name
[root@master hadoop]# mkdir -p /hadoop/tmp
[root@master hadoop]# mkdir -p /hadoop/hdfs/data
[root@master hadoop]# mkdir -p /hadoop/hdfs/name
修改core-site.xml文件
[root@ ~]# vi /soft/hadoop/hadoop-2.7.6/etc/hadoop/core-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/tmp</value>
<description>Abase for
other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>4096</value>
</property>
</configuration>
修改hdfs-site.xml
[root@ ~]# vi
/soft/hadoop/hadoop-2.7.6/etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/hadoop/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
复制mapred-site.xml.template为mapred-site.xml,并修改
[root@master hadoop]# cd /soft/hadoop/hadoop-2.7.6/etc/hadoop/
[root@master hadoop]# cp mapred-site.xml.template mapred-site.xml
[root@master hadoop]# vi mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<final>true</final>
</property>
<property>
<name>mapreduce.jobtracker.http.address</name>
<value>master:50030</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>
<property>
<name>mapred.job.tracker</name>
<value>http://master:9001</value>
</property>
</configuration>
修改yarn-site.xml
[root@master hadoop]# vi yarn-site.xml
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
/soft/hadoop/hadoop-2.7.6/etc/hadoop/slave,删除默认的,添加slave1,slave2
[root@master hadoop]# echo -e "slave1\nslave2" > /soft/hadoop/hadoop-2.7.6/etc/hadoop/slaves
2.3 启动
只在master执行,格式化
[root@master hadoop]# cd /soft/hadoop/hadoop-2.7.6/bin/
[root@master bin]# ./hadoop namenode -format
启动,只在master执行
[root@master bin]# cd /soft/hadoop/hadoop-2.7.6/sbin/
[root@master sbin]# ./start-all.sh
3.验证
请参照上一篇伪分布式截图,一模一样
3.1 jps查看各节点
master
[root@master sbin]# jps
3337 Jps
2915 SecondaryNameNode
3060 ResourceManager
2737 NameNode
[root@master sbin]#
slave1
[root@slave1 hadoop]# jps
2608 DataNode
2806 Jps
2706 NodeManager
[root@slave1 hadoop]#
slave2
[root@slave2 hadoop]# jps
2614 DataNode
2712 NodeManager
2812 Jps
[root@slave2 hadoop]#
浏览器访问master的50070,比如http://172.17.138.82:50070
http://172.17.138.82:8088/
好了,说明hadoop集群正常工作了
3.2 创建输入的数据,采用/etc/protocols文件作为测试
先将文件拷贝到 hdfs 上:
[root@master sbin]#hadoop dfs -put
/etc/protocols
/user/hadoop
/input
3.3 执行Hadoop WordCount应用(词频统计)
# 如果存在上一次测试生成的output,由于hadoop的安全机制,直接运行可能会报错,所以请手动删除上一次生成的output文件夹
$
hadoop jar /soft/hadoop/hadoop-2.7.6/share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.7.6-sources.jar org.apache.hadoop.examples.WordCount input output
3.4查看生成的单词统计数据
$ hadoop dfs -cat
/user/hadoop
/output/*
3.5停止
[root@master bin]# cd /soft/hadoop/hadoop-2.7.6/sbin/
[root@master sbin]# ./stop-all.sh
3-3 Hadoop集群完全分布式配置部署的更多相关文章
- 3-2 Hadoop集群伪分布模式配置部署
Hadoop伪分布模式配置部署 一.实验介绍 1.1 实验内容 hadoop配置文件介绍及修改 hdfs格式化 启动hadoop进程,验证安装 1.2 实验知识点 hadoop核心配置文件 文件系统的 ...
- 一脸懵逼学习基于CentOs的Hadoop集群安装与配置
1:Hadoop分布式计算平台是由Apache软件基金会开发的一个开源分布式计算平台.以Hadoop分布式文件系统(HDFS)和MapReduce(Google MapReduce的开源实现)为核心的 ...
- 一脸懵逼学习基于CentOs的Hadoop集群安装与配置(三台机器跑集群)
1:Hadoop分布式计算平台是由Apache软件基金会开发的一个开源分布式计算平台.以Hadoop分布式文件系统(HDFS)和MapReduce(Google MapReduce的开源实现)为核心的 ...
- 大数据系列(3)——Hadoop集群完全分布式坏境搭建
前言 上一篇我们讲解了Hadoop单节点的安装,并且已经通过VMware安装了一台CentOS 6.8的Linux系统,咱们本篇的目标就是要配置一个真正的完全分布式的Hadoop集群,闲言少叙,进入本 ...
- Hadoop集群完全分布式坏境搭建
前言 上一篇我们讲解了Hadoop单节点的安装,并且已经通过VMware安装了一台CentOS 6.8的Linux系统,咱们本篇的目标就是要配置一个真正的完全分布式的Hadoop集群,闲言少叙,进入本 ...
- Hadoop集群_Hadoop安装配置
1.集群部署介绍 1.1 Hadoop简介 Hadoop是Apache软件基金会旗下的一个开源分布式计算平台.以Hadoop分布式文件系统(HDFS,Hadoop Distributed Filesy ...
- 使用Docker搭建Hadoop集群(伪分布式与完全分布式)
之前用虚拟机搭建Hadoop集群(包括伪分布式和完全分布式:Hadoop之伪分布式安装),但是这样太消耗资源了,自学了Docker也来操练一把,用Docker来构建Hadoop集群,这里搭建的Hado ...
- 大数据中Hadoop集群搭建与配置
前提环境是之前搭建的4台Linux虚拟机,详情参见 Linux集群搭建 该环境对应4台服务器,192.168.1.60.61.62.63,其中60为主机,其余为从机 软件版本选择: Java:JDK1 ...
- hadoop集群完全分布式搭建
Hadoop环境搭建:完全分布式 集群规划: ip hostname 192.168.204.154 master namenode resour ...
随机推荐
- c++入门篇七
拷贝构造函数的调用时机: class Person { public: //构造函数 Person() { //无参构造函数 } Person(int a) { //有参构造函数 cout <& ...
- 【转】iPython入门技巧
[转]http://www.cnblogs.com/cuiyubo/p/6823478.html 学习<利用python进行数据分析> 第三章 IPython:一种交互式计算和开发环境的笔 ...
- 解决springboot启动失败问题:Unable to start embedded container;
将一个springboot项目导入到eclipse后,启动时报错Unable to start embedded container,以下时全部错误信息: Application startup fa ...
- SVG初尝试之path
命令汇总 命令基本规律 移动和直线命令 弧线命令
- centOS设置开机自启
原文:https://blog.csdn.net/txz317/article/details/49683439 1.利用 chkconfig 来配置启动级别 在CentOS或者RedHat其他系统下 ...
- vertx的HttpServer模块
Start HttpServer /** * 启动 HttpServer * multi instances 采用 synchronized防止线程安全问题 * addHandlers 方法是acto ...
- Redis实战 - 2.list、set和Sorted Set
List Redis的List是通过Linked List(链表)来实现的String集合,所以插入数据的速度很快. 但是缺点就是在数据量比较大的时候,访问某个数据的时间可能会很长,但针对这种情况,可 ...
- Python OpenCV 图像相识度对比
强大的openCV能做什么我就不啰嗦,你能想到的一切图像+视频处理. 这里,我们说说openCV的图像相似度对比, 嗯,说好听一点那叫图像识别,但严格讲, 图像识别是在一个图片中进行类聚处理,比如图片 ...
- 使用Windows Service Wrapper快速创建一个Windows Service 如nginx
前言 今天介绍一个小工具的使用.我们都知道Windows Service是一种特殊的应用程序,它的好处是可以一直在后台运行,相对来说,比较适合一些需要一直运行同时不需要过多用户干预的应用程序,这一类我 ...
- react native 中实现个别页面禁止截屏
这里主要用到了原生模块,下面贴出FlagSecureModule.java的代码 package com.studyproj.flagsecure; import android.util.Log; ...