本文档环境基于ubuntu16.04版本,(转发请注明出处:http://www.cnblogs.com/zhangyongli2011/ 如发现有错,请留言,谢谢)

一、准备

1.1 软件版本

  • Ubuntu 16.04.6 (ubuntu-16.04.6-server-amd64.iso)
  • JDK 1.8 (jdk-8u201-linux-x64.tar.gz)
  • Hadoop 2.7.7 (hadoop-2.7.7.tar.gz)
  • Spark 2.1.0 (spark-2.1.0-bin-hadoop2.7.tgz)

1.2 网络规划

本文规划搭建3台机器组成集群模式,IP与计算机名分别为, 如果是单台搭建,只需填写一个即可

  1. 192.168.241.132 master
  2. 192.168.241.133 slave1
  3. 192.168.241.134 slave2

1.3 软件包拷贝

可将上述软件包拷贝到3台机器的opt目录下

  • JDK 1.8
  • Hadoop 2.7.7
  • Spark 2.1.0

1.4 SSH设置

修改/etc/ssh/sshd_config文件,将以下三项开启yes状态

  1. PermitRootLogin yes
  2. PermitEmptyPasswords yes
  3. PasswordAuthentication yes

重启ssh服务

  1. service ssh restart

这样root用户可直接登陆,以及为后续ssh无密码登录做准备。

1.5 绑定IP和修改计算机名

1.5.1 修改/etc/hosts,添加IP绑定,并注释127.0.1.1(不注释会影响hadoop集群)

  1. root@master:/opt# cat /etc/hosts
  2. 127.0.0.1 localhost
  3. #127.0.1.1 ubuntu
  4. # The following lines are desirable for IPv6 capable hosts
  5. ::1 localhost ip6-localhost ip6-loopback
  6. ff02::1 ip6-allnodes
  7. ff02::2 ip6-allrouters
  8. 192.168.241.132 master
  9. 192.168.241.133 slave1
  10. 192.168.241.134 slave2

1.5.2 修改/etc/hostname,为绑定计算机名。(计算机名和上面hosts绑定名必须一致)

1.6 SSH无密码登陆(需提前安装ssh)

1.用rsa生成密钥,一路回车。

  1. ssh-keygen -t rsa

2.进到当前用户的隐藏目录(.ssh)

  1. cd ~/.ssh

3.把公钥复制一份,并改名为authorized_keys

  1. cp id_rsa.pub authorized_keys

这步执行完后,在当前机器执行ssh localhost可以无密码登录本机了。

如本机装有ssh-copy-id命令,可以通过

  1. ssh-copy-id root@第二台机器名

然后输入密码,在此之后在登陆第二台机器,可以直接

  1. ssh[空格]第二台机器名

进行登录。初次执行会提示确认,输入yes和登陆密码,之后就没提示了。

1.7 JDK安装(三台机器可同步进行)

下载:jdk-8u201-linux-x64.tar.gz 包,放到/opt下解压

1.7.1 将解压后的文件夹重命名

  1. mv jdk1.8.0_201 jdk

1.7.2 将JDK环境变量配置到/etc/profile中

  1. export JAVA_HOME=/opt/jdk
  2. export JRE_HOME=/opt/jdk/jre
  3. export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib
  4. export PATH=$JAVA_HOME/bin:$PATH

1.7.3 检查JDK是否配置好

  1. source /etc/profile
  2. java -version

提示以下信息代表JDK安装完成:

  1. java version "1.8.0_201"
  2. Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
  3. Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

1.8 其他配置

1.8.1 网络配置

修改为固定IP ,/etc/network/interfaces

  1. # The loopback network interface
  2. auto lo
  3. iface lo inet loopback
  4. # The primary network interface
  5. auto eth0
  6. #iface eth0 inet dhcp
  7. iface eth0 inet static
  8. address 192.168.241.132
  9. netmask 255.255.255.0
  10. gateway 192.168.20.1

重启网络

  1. service networking restart

1.8.2 DNS配置

第一种方法,永久改

修改/etc/resolvconf/resolv.conf.d/base(这个文件默认是空的)

  1. nameserver 119.6.6.6

保存后执行

  1. resolvconf -u

查看resolv.conf 文件就可以看到我们的设置已经加上

  1. cat /etc/resolv.conf

重启resolv

  1. /etc/init.d/resolvconf restart

第二种方法,临时改

修改 /etc/resolv.conf文件,增加

  1. nameserver 119.6.6.6

重启resolv

  1. /etc/init.d/resolvconf restart

二、Hadoop部署

2.1 Hadoop安装(三台机器可同步进行)

  1. 下载hadoop2.7.7(hadoop-2.7.7.tar.gz)
  2. 解压 tar -zxvf hadoop-2.7.7.tar.gz ,并在主目录下创建tmp、dfs、dfs/name、dfs/node、dfs/data
  1. cd /opt/hadoop-2.7.7
  2. mkdir tmp
  3. mkdir dfs
  4. mkdir dfs/name
  5. mkdir dfs/node
  6. mkdir dfs/data

2.2 Hadoop配置

以下操作都在hadoop-2.7.7/etc/hadoop下进行

2.2.1 编辑hadoop-env.sh文件,修改JAVA_HOME配置项为JDK安装目录

  1. export JAVA_HOME=/opt/jdk

2.2.2 编辑core-site.xml文件,添加以下内容

其中master为计算机名,/opt/hadoop-2.7.7/tmp为手动创建的目录

  1. <configuration>
  2. <property>
  3. <name>fs.defaultFS</name>
  4. <value>hdfs://master:9000</value>
  5. </property>
  6. <property>
  7. <name>io.file.buffer.size</name>
  8. <value>131072</value>
  9. </property>
  10. <property>
  11. <name>hadoop.tmp.dir</name>
  12. <value>file:/opt/hadoop-2.7.7/tmp</value>
  13. <description>Abasefor other temporary directories.</description>
  14. </property>
  15. <property>
  16. <name>hadoop.proxyuser.spark.hosts</name>
  17. <value>*</value>
  18. </property>
  19. <property>
  20. <name>hadoop.proxyuser.spark.groups</name>
  21. <value>*</value>
  22. </property>
  23. </configuration>

2.2.3 编辑hdfs-site.xml文件,添加以下内容

其中master为计算机名,

file:/opt/hadoop-2.7.7/dfs/name和file:/opt/hadoop-2.7.7/dfs/data为手动创建目录

  1. <configuration>
  2. <property>
  3. <name>dfs.namenode.secondary.http-address</name>
  4. <value>master:9001</value>
  5. </property>
  6. <property>
  7. <name>dfs.namenode.name.dir</name>
  8. <value>file:/opt/hadoop-2.7.7/dfs/name</value>
  9. </property>
  10. <property>
  11. <name>dfs.datanode.data.dir</name>
  12. <value>file:/opt/hadoop-2.7.7/dfs/data</value>
  13. </property>
  14. <property>
  15. <name>dfs.replication</name>
  16. <value>3</value>
  17. </property>
  18. <property>
  19. <name>dfs.webhdfs.enabled</name>
  20. <value>true</value>
  21. </property>
  22. </configuration>

复制mapred-site.xml.template并重命名为mapred-site.xml

  1. cp mapred-site.xml.template mapred-site.xml

2.2.4 编辑mapred-site.xml文件,添加以下内容

其中master为计算机名

  1. <configuration>
  2. <property>
  3. <name>mapreduce.framework.name</name>
  4. <value>yarn</value>
  5. </property>
  6. <property>
  7. <name>mapreduce.jobhistory.address</name>
  8. <value>master:10020</value>
  9. </property>
  10. <property>
  11. <name>mapreduce.jobhistory.webapp.address</name>
  12. <value>master:19888</value>
  13. </property>
  14. </configuration>

2.2.5 编辑yarn-site.xml文件,添加以下内容

其中master为计算机名

  1. <configuration>
  2. <!-- Site specific YARN configuration properties -->
  3. <property>
  4. <name>yarn.nodemanager.aux-services</name>
  5. <value>mapreduce_shuffle</value>
  6. </property>
  7. <property>
  8. <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
  9. <value>org.apache.hadoop.mapred.ShuffleHandler</value>
  10. </property>
  11. <property>
  12. <name>yarn.resourcemanager.address</name>
  13. <value>master:8032</value>
  14. </property>
  15. <property>
  16. <name>yarn.resourcemanager.scheduler.address</name>
  17. <value>master:8030</value>
  18. </property>
  19. <property>
  20. <name>yarn.resourcemanager.resource-tracker.address</name>
  21. <value>master:8035</value>
  22. </property>
  23. <property>
  24. <name>yarn.resourcemanager.admin.address</name>
  25. <value>master:8033</value>
  26. </property>
  27. <property>
  28. <name>yarn.resourcemanager.webapp.address</name>
  29. <value>master:8088</value>
  30. </property>
  31. </configuration>

2.2.6 修改slaves文件,添加集群节点(多机添加多个)

添加以下

  1. master
  2. slave1
  3. slave2

2.2.7 Hadoop集群搭建

hadoop配置集群,可以将配置文件etc/hadoop下内容同步到其他机器上,既2.2.1-2.2.6无需在一个个配置。

  1. cd /opt/hadoop-2.7.7/etc
  2. scp -r hadoop root@另一台机器名:/opt/hadoop-2.7.7/etc

2.3 Hadoop启动

1.格式化一个新的文件系统,进入到hadoop-2.7.7/bin下执行:

  1. ./hadoop namenode -format

2.启动hadoop,进入到hadoop-2.7.7/sbin下执行:

  1. ./start-all.sh

看到如下内容说明启动成功

  1. root@master:/opt/hadoop-2.7.7/sbin# ./start-all.sh
  2. This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh
  3. Starting namenodes on [master]
  4. master: starting namenode, logging to /opt/hadoop-2.7.7/logs/hadoop-root-namenode-master.out
  5. slave2: starting datanode, logging to /opt/hadoop-2.7.7/logs/hadoop-root-datanode-slave2.out
  6. master: starting datanode, logging to /opt/hadoop-2.7.7/logs/hadoop-root-datanode-master.out
  7. slave1: starting datanode, logging to /opt/hadoop-2.7.7/logs/hadoop-root-datanode-slave1.out
  8. Starting secondary namenodes [master]
  9. master: starting secondarynamenode, logging to /opt/hadoop-2.7.7/logs/hadoop-root-secondarynamenode-master.out
  10. starting yarn daemons
  11. starting resourcemanager, logging to /opt/hadoop-2.7.7/logs/yarn-root-resourcemanager-master.out
  12. slave2: starting nodemanager, logging to /opt/hadoop-2.7.7/logs/yarn-root-nodemanager-slave2.out
  13. slave1: starting nodemanager, logging to /opt/hadoop-2.7.7/logs/yarn-root-nodemanager-slave1.out
  14. master: starting nodemanager, logging to /opt/hadoop-2.7.7/logs/yarn-root-nodemanager-master.out

2.4 Hadoop集群检查

方法1:检查hadoop集群,进入hadoop-2.7.7/bin下执行

  1. ./hdfs dfsadmin -report

查看Live datanodes 节点个数,例如:Live datanodes (3),则表示3台都启动成功

  1. root@master:/opt/hadoop-2.7.7/bin# ./hdfs dfsadmin -report
  2. Configured Capacity: 621051420672 (578.40 GB)
  3. Present Capacity: 577317355520 (537.67 GB)
  4. DFS Remaining: 577317281792 (537.67 GB)
  5. DFS Used: 73728 (72 KB)
  6. DFS Used%: 0.00%
  7. Under replicated blocks: 0
  8. Blocks with corrupt replicas: 0
  9. Missing blocks: 0
  10. Missing blocks (with replication factor 1): 0
  11. -------------------------------------------------
  12. Live datanodes (3):

方法2:访问8088端口,http://192.168.241.132:8088/cluster/nodes

方法3:访问50070端口http://192.168.241.132:50070/

三、Spark部署

3.1 Spark安装(三台机器可同步进行)

  1. 下载spark-2.1.0-bin-hadoop2.7.tgz,放到opt下解压。
  2. 将spark环境变量配置到/etc/profile中
  1. export SPARK_HOME=/opt/spark-2.1.0-bin-hadoop2.7
  2. export PATH=$JAVA_HOME/bin:$SPARK_HOME/bin:$PATH

3.2 Spark配置

1.进入spark-2.1.0-bin-hadoop2.7/conf复制spark-env.sh.template并重命名为spark-env.sh

  1. cp spark-env.sh.template spark-env.sh

编辑spark-env.sh文件,添加以下内容

  1. export JAVA_HOME=/opt/jdk
  2. export SPARK_MASTER_IP=192.168.241.132
  3. export SPARK_WORKER_MEMORY=8g
  4. export SPARK_WORKER_CORES=4
  5. export SPARK_EXECUTOR_MEMORY=4g
  6. export HADOOP_HOME=/opt/hadoop-2.7.7/
  7. export HADOOP_CONF_DIR=/opt/hadoop-2.7.7/etc/hadoop
  8. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/jdk/jre/lib/amd64

2.把slaves.template拷贝为slaves,并编辑 slaves文件

  1. cp slaves.template slaves

编辑slaves文件,添加以下内容(多机添加多个)

  1. master
  2. slave1
  3. slave2

3.3 配置Spark集群

可以将配置文件spark-2.1.0-bin-hadoop2.7/conf下内容同步到其他机器上,既3.2无需在一个个配置。

  1. scp -r conf root@另一台机器名:/opt/spark-2.1.0-bin-hadoop2.7

3.4 Spark启动

启动spark,进入spark-2.1.0-bin-hadoop2.7/sbin下执行

  1. ./start-all.sh

3.5 Spark集群检查

访问http://192.168.241.134:8080/

注意:配置Spark集群,需要保证子节点内容和主节点内容一致。

这样Hadoop集群和Spark集群就都搭建好了。

(转发请注明出处:http://www.cnblogs.com/zhangyongli2011/ 如发现有错,请留言,谢谢)

Hadoop集群+Spark集群搭建(一篇文章就够了)的更多相关文章

  1. docker 快速部署ES集群 spark集群

    1) 拉下来 ES集群  spark集群 两套快速部署环境, 并只用docker跑起来,并保存到私库. 2)弄清楚怎么样打包 linux镜像(或者说制作). 3)试着改一下,让它们跑在集群里面. 4) ...

  2. (转) TensorFlow深度学习,一篇文章就够了

    TensorFlow深度学习,一篇文章就够了 2016/09/22 · IT技术 · TensorFlow, 深度学习 分享到:6   原文出处: 我爱计算机 (@tobe迪豪 )    作者: 陈迪 ...

  3. (转载)Android:学习AIDL,这一篇文章就够了(上)

    前言 在决定用这个标题之前甚是忐忑,主要是担心自己对AIDL的理解不够深入,到时候大家看了之后说——你这是什么玩意儿,就这么点东西就敢说够了?简直是坐井观天不知所谓——那样就很尴尬了.不过又转念一想, ...

  4. Android:学习AIDL,这一篇文章就够了(下)

    前言 上一篇博文介绍了关于AIDL是什么,为什么我们需要AIDL,AIDL的语法以及如何使用AIDL等方面的知识,这一篇博文将顺着上一篇的思路往下走,接着介绍关于AIDL的一些更加深入的知识.强烈建议 ...

  5. (转载)Android:学习AIDL,这一篇文章就够了(下)

    前言 上一篇博文介绍了关于AIDL是什么,为什么我们需要AIDL,AIDL的语法以及如何使用AIDL等方面的知识,这一篇博文将顺着上一篇的思路往下走,接着介绍关于AIDL的一些更加深入的知识.强烈建议 ...

  6. 面试题-关于Java线程池一篇文章就够了

    在Java面试中,线程池相关知识,虽不能说是必问提,但出现的频次也是非常高的.同时又鉴于公众号"程序新视界"的读者后台留言让写一篇关于Java线程池的文章,于是就有本篇内容,本篇将 ...

  7. TensorFlow深度学习,一篇文章就够了

    http://blog.jobbole.com/105602/ 作者: 陈迪豪,就职小米科技,深度学习工程师,TensorFlow代码提交者. TensorFlow深度学习框架 Google不仅是大数 ...

  8. 真的,Kafka 入门一篇文章就够了

    初识 Kafka 什么是 Kafka Kafka 是由 Linkedin 公司开发的,它是一个分布式的,支持多分区.多副本,基于 Zookeeper 的分布式消息流平台,它同时也是一款开源的基于发布订 ...

  9. go包管理速通,一篇文章就够了,再也不用担心因为不会导包被辞退

    前言 最近在看一些go语言相关的书,发现了一个有意思的事情:其中一本书最新印刷的版本是2017年3月,而golang包管理的后起之秀go module伴随go1.11于2018年8月诞生--因此,书里 ...

随机推荐

  1. BZOJ 4517: [Sdoi2016]排列计数 错排公式

    4517: [Sdoi2016]排列计数 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4517 Description 求有多少种长度为 ...

  2. nodejs 导入导出模块module.exports向外暴露多个模块 require导入模块

    .moudel.exports 导出模块 导出单个模块 // user.js moudel.exports = 函数名或者变量名: //app.js 导入 require('user.js') 当然. ...

  3. object-c语言的nonatomic,assign,copy,retain的区别

    nonatomic: 非原子性访问,不加同步,多线程并发访问会提高性能.如果不加此属性,则默认是两个访问方法都为原子型事务访问.                    (atomic是Objc使用的一 ...

  4. 线性稳压器 (LDO)

    线性稳压器 (LDO) 当输出电压低于输入电压时,必须从负载电源和压降比来考虑要采用线性稳压器 (LDO) 或降压转换器 (Buck) 低压降线性稳压器 (LDO) 适合用在需求低噪讯.低电流和低压降 ...

  5. TCP/IP协议栈与数据报封装 (802.3 Ethernet 以太网 802.11 WLAN 无线网 )

    http://blog.csdn.net/jnu_simba/article/details/8957242 一.ISO/OSI参考模型 OSI(open system interconnection ...

  6. ubuntu 包管理详解

    http://www.cnblogs.com/forward/archive/2012/01/10/2318483.html

  7. hihoCoder - 1082 - 然而沼跃鱼早就看穿了一切 (字符串处理!!)

    #1082 : 然而沼跃鱼早就看穿了一切 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描写叙述 fjxmlhx每天都在被沼跃鱼刷屏,因此他急切的找到了你希望你写一个程序屏蔽全 ...

  8. Visual Studio IDE 背景色该为保护眼睛色

    将背景颜色改成你想要的背景颜色. 将色调改为:85.饱和度:123.亮度:205->添加到自定义颜色->在自定义颜色选定点确定   就搞定了!

  9. 【实体 报错 】No serializer found for class org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer and no properties discovered to create BeanSerializer

    HTTP Status 500 - Could not write content: No serializer found for class org.hibernate.proxy.pojo.ja ...

  10. 能力成熟度模型CMM

    能力成熟度模型(Capability Maturity Model,英文缩写为CMM)[1]是 一种开发模型.Carnegie Mellon大学的研究人员从美国国防部合同承包方那里收集数据并加以研究, ...