实验环境介绍

4台机器,规划如下:

计算机名 IP地址 角色
master 192.168.138.200 NameNode,SecondaryNameNode,ResourceManager
slave 192.168.138.201 DataNode,NodeManager
ha1 192.168.138.202 DataNode,NodeManager
ha2 192.168.138.203 DataNode,NodeManager

第一步:配置/etc/hosts文件

cat /etc/hosts
192.168.138.200 master
192.168.138.201 slave
192.168.138.202 ha1
192.168.138.203 ha2

由于4台主机hosts文件相同,这里使用saltstack等工具将文件分发到其他3台机器上。

salt '*' cp.get_file salt://files/hosts /etc/hosts

第二步:安装java-1.8.0-openjdk和java-1.8.0-openjdk-devel

yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel

其它机器使用saltstack批量安装:

cat /srv/salt/base/top.sls
base:
'L@ha1,ha2,slave':
- add_pkgs
[root@master base]# cat add_pkgs.sls
add_java_1.8:
pkg.installed:
- pkgs: ['java-1.8.0-openjdk','java-1.8.0-openjdk-devel']
salt '*' state.highstate saltenv=base test=False

检查一下是否安装成功

java -version
openjdk version "1.8.0_161"
OpenJDK Runtime Environment (build 1.8.0_161-b14)
OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)

以上信息表示安装成功。

第三步:下载hadoop二进制包

下载地址:https://hadoop.apache.org/releases.html

选择一个适合的版本下载,本文选择的是2.7.5的二进制版本,二进制包无需编译可直接运行。

解压包到/usr/local/hadoop

tar xvf hadoop-2.7.5.tar.gz -C /usr/local/
mv /usr/local/hadoop-2.7.5 /usr/local/hadoop

第四步:配置master到其它主机包括自己的SSH免密免yes登录

ssh-keygen -b 2048 -t rsa -N ''
ssh-copy-id -i ~/.ssh/id_rsa.pub root@master
ssh-copy-id -i ~/.ssh/id_rsa.pub root@slave
ssh-copy-id -i ~/.ssh/id_rsa.pub root@ha1
ssh-copy-id -i ~/.ssh/id_rsa.pub root@ha2

编辑/etc/ssh/ssh-config修改或新增如下2行

Host *
GSSAPIAuthentication no
StrictHostKeyChecking no

测试一下:

[root@master ~]# ssh master
Last login: Mon Jan 29 10:55:36 2018 from master
[root@master ~]# logout
Connection to master closed.
[root@master ~]# ssh slave
Last login: Mon Jan 29 10:55:43 2018 from master
[root@slave ~]# logout
Connection to slave closed.
[root@master ~]# ssh ha1
Last login: Mon Jan 29 10:56:24 2018 from slave
[root@ha1 ~]# logout
Connection to ha1 closed.
[root@master ~]# ssh ha2
Last login: Sun Jan 28 18:28:59 2018 from master
[root@ha2 ~]# logout
Connection to ha2 closed.
[root@master ~]#

这里需要注意的一点是:有时候配置好登录仍然会提示输入密码的问题,主要原因在于用户家目录不能带有w权限,把w权限去掉就可以了。

第五步:配置/usr/local/hadoop/etc/hadoop/hadoop-env.sh

这是hadoop环境变量脚本,其中需要配置的是:

export JAVA_HOME=""             #这行信息需要配置JAVA1.8的库环境路径
export HADOOP_CONF_DIR="" #这行配置hadoop配置文件路径

JAVA_HOME查找方法:

[root@master base]# which java
/usr/bin/java
[root@master base]# ll /usr/bin/java
lrwxrwxrwx. 1 root root 22 Jan 22 20:21 /usr/bin/java -> /etc/alternatives/java
[root@master base]# readlink /etc/alternatives/java
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64/jre/bin/java

这样就得出JAVA_HOME的路径为:

/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64/jre

HADOOP_CONF_DIR配置文件路径直接填写:/usr/local/hadoop/etc/hadoop即可。

所以//usr/local/hadoop/etc/hadoop/hadoop-env.sh需要修改的两行如下:

export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64/jre"
export HADOOP_CONF_DIR="/usr/local/hadoop/etc/hadoop"

第六步:配置/usr/local/hadoop/etc/hadoop/core-site.xml

cat //usr/local/hadoop/etc/hadoop/core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/var/hadoop</value>
<description>A base for other temporary directories.</description>
</property>
</configuration>

在所有机器上创建/var/hadoop文件夹

salt '*' cmd.run "mkdir -p /var/hadoop"

第七步:配置/usr/local/hadoop/etc/hadoop/hdfs-site.xml

cat /usr/local/hadoop/etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.http-address</name>
<value>master:50070</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>

第八步:把/usr/local/hadoop/etc/hadoop文件夹同步到所有机器

salt '*' cp.get_dir salt://files/hadoop/ /usr/local/hadoop/etc/

第九步:在namenode上执行格式化操作

/usr/local/hadoop/bin/hdfs namenode -format

在没有报错的情况启动集群

/usr/local/hadoop/sbin/start-dfs.sh

第十步:验证

在所有机器上执行 jps

salt '*' cmd.run "jps"
[root@master ~]# jps
93353 SecondaryNameNode
123000 Jps
95210 ResourceManager
94332 NameNode
[root@master ~]# salt '*' cmd.run "jps"
ha1:
10292 Jps
9484 NodeManager
9279 DataNode
slave:
22323 DataNode
23369 Jps
22522 NodeManager
ha2:
8594 Jps
7715 NodeManager
7512 DataNode

能看到节点信息说明搭建成功。

hadoop完全分步式搭建的更多相关文章

  1. mahout demo——本质上是基于Hadoop的分步式算法实现,比如多节点的数据合并,数据排序,网路通信的效率,节点宕机重算,数据分步式存储

    摘自:http://blog.fens.me/mahout-recommendation-api/ 测试程序:RecommenderTest.java 测试数据集:item.csv 1,101,5.0 ...

  2. 基于Zookeeper的分步式队列系统集成案例

    基于Zookeeper的分步式队列系统集成案例 Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, ...

  3. 转】Mahout分步式程序开发 聚类Kmeans

    原博文出自于: http://blog.fens.me/hadoop-mahout-kmeans/ 感谢! Mahout分步式程序开发 聚类Kmeans Hadoop家族系列文章,主要介绍Hadoop ...

  4. 转】Mahout分步式程序开发 基于物品的协同过滤ItemCF

    原博文出自于: http://blog.fens.me/hadoop-mahout-mapreduce-itemcf/ 感谢! Posted: Oct 14, 2013 Tags: Hadoopite ...

  5. Mahout分步式程序开发 聚类Kmeans(转)

    Posted: Oct 14, 2013 Tags: clusterHadoopkmeansMahoutR聚类 Comments: 13 Comments Mahout分步式程序开发 聚类Kmeans ...

  6. Mahout分步式程序开发 基于物品的协同过滤ItemCF

    http://blog.fens.me/hadoop-mahout-mapreduce-itemcf/ Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, ...

  7. hadoop+spark集群搭建入门

    忽略元数据末尾 回到原数据开始处 Hadoop+spark集群搭建 说明: 本文档主要讲述hadoop+spark的集群搭建,linux环境是centos,本文档集群搭建使用两个节点作为集群环境:一个 ...

  8. hadoop集群环境搭建之zookeeper集群的安装部署

    关于hadoop集群搭建有一些准备工作要做,具体请参照hadoop集群环境搭建准备工作 (我成功的按照这个步骤部署成功了,经实际验证,该方法可行) 一.安装zookeeper 1 将zookeeper ...

  9. hadoop集群环境搭建之安装配置hadoop集群

    在安装hadoop集群之前,需要先进行zookeeper的安装,请参照hadoop集群环境搭建之zookeeper集群的安装部署 1 将hadoop安装包解压到 /itcast/  (如果没有这个目录 ...

随机推荐

  1. SR-IOV虚拟机的MTU与物理网卡的MTU

    在进行SR-IOV虚拟机MTU方面的测试时,出现如下情况: 1)物理网卡PF的MTU值是4000: root@compute-1:~# ip l|more1: lo: <LOOPBACK,UP, ...

  2. Expression的烦恼

    var tar = Expression.Label(typeof(int)); var p1=Expression.Parameter(typeof(int), "a"); va ...

  3. 19、Squid代理服务器

    第十九章,配置Squid服务器 一.代理服务器简介 19.1.1:什么是代理服务器 代理服务器的功能就是代理网络用户去取的网络信息,好比是网络信息的中转站,大多被用来连接互联网和局域网.代理服务器好像 ...

  4. SWUST OJ(960)

    双向链表的操作问题 /*双向链表的操作问题*/ #include <stdio.h> #include <stdlib.h> typedef struct DLNode { i ...

  5. 『TensorFlow』读书笔记_降噪自编码器

    『TensorFlow』降噪自编码器设计  之前学习过的代码,又敲了一遍,新的收获也还是有的,因为这次注释写的比较详尽,所以再次记录一下,具体的相关知识查阅之前写的文章即可(见上面链接). # Aut ...

  6. CSS选择器 nth-child 和 nth-of-type

    Css 3 中两个新的选择器 nth-child 和 nth-of-type 都可以选择父元素下对应的子元素,但它们到底有什么区别呢? :nth-child(n) 选择器匹配属于其父元素下的第n个子元 ...

  7. .NET:bin 与 obj,Debug 与 Release ,区别与选择

    bin 与 obj bin 目录:用来存放编译的结果. ( bin是二进制binrary的英文缩写,因为最初C编译的程序文件都是二进制文件 ) 编译的结果,有 Debug 和 Release 两个版本 ...

  8. Python 3.6.5 导入pymysql模块出错:No module named 'pymysql'

    检查一下项目设置中的解释器. 查看是否添加PyMySQL模块,如果没有请添加PyMySQL模块

  9. java变量的作用域和基本数据类型转换

    1.变量的作用域 赋值运算符 变量名 = 表达式 列: a = (b+3)+(b-1) 表达式就是符号(如:加号,减号)与操作数(如:b,3)的组合 自动类型转换(隐式类型转换):从小类型到大类型可以 ...

  10. jvm-垃圾收集

    概述 说起垃圾收集,大部分人都把这项技术当做Java语言的伴生产物.其实,GC主要就是考虑完成三件事情: 哪些内存需要回收 什么时候回收 如何回收. 经过半个多世纪的发展,目前内存的动态分配与内存的回 ...