1 搭建这个完全分布式的前提环境:

配置好了jdk环境

配置好了ssh免密码登录(详见我的另外一篇博客,专门说ssh免密码登录)

我这里设置了四台机器,一台做master,另外三台做slave,hosts配置如下

192.168.8.94    master
192.168.8.95 slave1
192.168.8.96 slave2
192.168.8.97 slave3

2 hadoop配置(以下的配置只在master上进行,配置好了hadoop之后,再发送到另外三台slave机器上,再配置环境变量就可以了)

首先把hadoop 2.6.0.tar.gz解压到/usr/local目录下

解压命令:sudo tar -xzvf  hadoop 2.6.0.tar.gz

然后把解压后的文件夹改名为hadoop

2.1 下面配置环境变量:

配置bashrc,命令 sudo vim ~/.bashrc

配置信息如下图:

修改好了之后,执行source命令生效环境变量,命令 source ~/.bashrc

配置/etc/profile

配置信息如下:

修改好了之后,执行source /etc/profile 命令生效

2.2 配置hadoop的配置文件

所有hadoop的配置文件都在/usr/local/hadoop/etc/hadoop

首先是slaves文件,把所有slave的主机名都写在里面,一行一个,就可以了(注意,要与hosts里配置的名字相一致)

slave1
slave2
slave3

hadoop-env.sh文件

之前这一行是被注释掉的,解除注释后,加上自己的jdk绝对路径。

yarn-env.sh文件,和hadoop-env.sh一样,配置jdk环境变量

core-site.xml 文件

<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
</property>

hdfs-site.xml文件

<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>4</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>

mapred-site.xml

这个配置文件本来是不存在的,但是有一个名为mapred-site.xml.template的模板文件,执行mv mapred-site.xml.template mapred-site.xml复制重命名一份就行了,然后做配置

<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>

yarn-site.xml文件

<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</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>

这样,hadoop的所有配置就做好了。

然后再把这个/usr/local/hadoop文件分别发送给另外三个slave,执行如下命令即可,不过要在目标文件夹设置好读写权限

比如在slave1上设置读写权限,在/usr/local目录下执行如下命令即可

sudo chown -R hadoop ./

其中hadoop是我的用户名,./表示当前目录

然后再master机器上执行如下命令就可以把hadoop文件发送到slave1上了,slave2和3方法相同

scp -r /usr/local/hadoop hadoop@slave1:/usr/local/

3 发送过去之后修改slave中几个配置文件

首先就是像master一样配置环境变量,前边写了,不赘述了。然后修改core-site.xml文件dfs.datanode.data.dir这一项,如下

<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/data/node1</value>
</property>

在data后边又添加了一个目录叫node1,在slave2上添加的就叫nade2,以此类推,不这样配置会检测不出当前存在的某些虚拟机。

以上就完成了,然后就是通过命令启动master上的hadoop,slave上的某些进程就会启动,就ok了。

Hadoop2.6.0 完全分布式搭建的更多相关文章

  1. hadoop2.2.0伪分布式搭建3--安装Hadoop

    3.1上传hadoop安装包 3.2解压hadoop安装包 mkdir /cloud #解压到/cloud/目录下 tar -zxvf hadoop-2.2.0.tar.gz -C /cloud/ 3 ...

  2. hadoop2.2.0伪分布式搭建

    1.准备Linux环境     1.0点击VMware快捷方式,右键打开文件所在位置 -> 双击vmnetcfg.exe -> VMnet1 host-only ->修改subnet ...

  3. Hadoop2.6.0伪分布式搭建

    环境: 1.Ubuntu14.04 首先要在linux系统上新建一个账户,比如就叫做hadoop,用于专门运行hadoop. 2.配置jdk 我是使用的版本是jdk1.8. 解压:创建/usr/jav ...

  4. hadoop2.4.0伪分布式搭建以及分布式关机重启后datanode没起来的解决办法

    1.准备Linux环境 1.0点击VMware快捷方式,右键打开文件所在位置 -> 双击vmnetcfg.exe -> VMnet1 host-only ->修改subnet ip ...

  5. hadoop2.2.0伪分布式搭建1--准备Linux环境

    1.0修改网关 点击VMware快捷方式,右键打开文件所在位置 -> 双击vmnetcfg.exe -> VMnet1 host-only ->修改subnet ip 设置网段:19 ...

  6. hadoop2.2.0伪分布式搭建2--安装JDK

    2.1上传FileZilla 上传 https://filezilla-project.org/ 2.2解压jdk #创建文件夹 mkdir /usr/java #解压 tar -zxvf jdk-7 ...

  7. Hadoop2.5.0伪分布式环境搭建

    本章主要介绍下在Linux系统下的Hadoop2.5.0伪分布式环境搭建步骤.首先要搭建Hadoop伪分布式环境,需要完成一些前置依赖工作,包括创建用户.安装JDK.关闭防火墙等. 一.创建hadoo ...

  8. 在Win7虚拟机下搭建Hadoop2.6.0伪分布式环境

    近几年大数据越来越火热.由于工作需要以及个人兴趣,最近开始学习大数据相关技术.学习过程中的一些经验教训希望能通过博文沉淀下来,与网友分享讨论,作为个人备忘. 第一篇,在win7虚拟机下搭建hadoop ...

  9. bayaim_hadoop1_2.2.0伪分布式搭建

    ------------------bayaim_hadoop1_2.2.0伪分布式搭建_2018年11月06日09:21:46--------------------------------- 1. ...

随机推荐

  1. Showing All Messages : error: open /Users/apple/Library/Developer/Xcode/DerivedData/xxx-dkhmpttmnuppvbcxijlcxacfpzcl/Build/Products/Debug-iphoneos/xxx.app/EaseUIResource.bundle/arrow@2x.png: N

    2报错 Showing All Messages : error: open /Users/apple/Library/Developer/Xcode/DerivedData/xxx-dkhmpttm ...

  2. tomcat端口占用后的解决办法【亲测有效】

    https://www.cnblogs.com/zhangtan/p/5856573.html 检测正在使用的端口   这里就以win7为例进行讲解. 首先打开cmd,打开的方法很简单,在开始菜单中直 ...

  3. 其他乱七八糟的css

    white-space:normal; word-break:break-all;字母数字强制换行表格宽度失效给上table-layout:fixed(display: table-cell;此元素会 ...

  4. 使用docker安装和运行常用的数据库和中间件

    mysql: docker pull mysql: docker run --name mysql -p : -v /usr/share/zoneinfo/Asia/Shanghai:/etc/loc ...

  5. centOS下yum报错

    CentOS下yum报错 备注:当我们在CentOS下使用yum命令的时候,会报一些错误,一下是我总结的几个解决问题的方法.(保证自己的服务器可以上网) 一.关于Loaded plugins: fas ...

  6. ZooKeeper异常:Error connecting service It is probably not running

    ZooKeeper安装后使用以下命令可以启动成功 bin/zkServer.sh start 但是使用下面命令查看启动状态,则报错误: bin/zkServer.sh status Error con ...

  7. Django的aggregate()和annotate()函数的区别

    aggregate() aggregate()为所有的QuerySet生成一个汇总值,相当于Count().返回结果类型为Dict. annotate() annotate()为每一个QuerySet ...

  8. Python3乘法口诀表(由上至下+由下至上)

    一.所用知识点: 1.变量的使用. 2.循环语句的使用,这里用到的是双while循环.当然,使用其他的循环去做也是可以的.我认为,对于刚刚接触编程的人来说,使用双while循环比较容易理解. 3.使用 ...

  9. java入门---简介&简单输出小例子&开发前准备

        Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计语言和Java平台的总称.由James Gosling和同事们共同研发,并在1995年正式推出.J ...

  10. Python: 列表的两种遍历方法

    方法一:以列表中元素的下标进行访问 def traverse1(list1): for i in range(len(list1)): print(list1[i], end=' ') print() ...