hadoop2.9.2安装hadoop_pid_dir_Hadoop3.2 +Spark3.0全分布式安装
目前Apache官网已经推出了最新版的Haoop3.2和最新版的Spark3.0,比原来增加了很多新特性。Hadoop的安装主要是为Spark提供HDFS的支持和yarn的调度。那么我们将在本文介绍全分布式的Hadoop和Spark的安装方法,供大家参考。
安装系统:Ubuntu 16.04
主节点(Master)数量:1
从节点(Slave)数量:2
一、前期准备
1.设置用户
在三台机器上新建Hadoop用户并设置sudo权限:
$ su
输入密码
$useradd -m hadoop -s /bin/bash
$passwd hadoop
设置密码
$adduser hadoop sudo # 为用户hadoop增加管理员权限
这样做的目的主要是为了避免使用root
用户,从安全考虑。
2.安装Java和Scala并设置相应的环境变量
Hadoop3.0之后的版本只支持Java8以后的版本。下载完jdk解压之后放置于’/usr/lib/jvm’下面(目录可以更改),下载完之后在‘/etc/profile’中配置相关的环境变量
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
export JRE_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH
export SCALA_HOME=/usr/share/scala-2.11
设置完之后,source /etc/profile
使得环境变量生效。
很多人在之前已经安装了系统自带的openjdk,但是并没有设置JAVA_HOME
等相应的环境变量,这时候我们需要自己去找到对应的安装目录,步骤如下:
首先,切换到 /usr/bin 目录
然后 ll java ,找到Java的软连接路径: lrwxrwxrwx 1 root root 22 9月 25 11:23 java -> /etc/alternatives/java*
找到路径之后,然后继续查看软连接指向的值: ll /etc/alternatives/java
得到如下:lrwxrwxrwx 1 root root 46 9月 25 11:23 /etc/alternatives/java -> /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java*
那么目录中的 /usr/lib/jvm/java-8-openjdk-amd64 就是我们需要引入的 JAVA_HOME 了
同理,我们按照上述方法可以找到scala的安装目录。
3.配置hosts并设置集群机器之间的免密登录。
由于Hadoop和Spark的各个节点之间存在着频繁的文件拷贝,所以我们需要设置机器之间的免密登录,如果不设置就相当于集群之间的机器无法相互通信,自然无法安装成功!因此我们需要配置主节点到从节点的免密登录和从节点到主节点的免密登录。步骤如下:
修改hosts
sudo vi /etc/hosts
#设置每个机器的名称和地址:我的设置如下
192.168.1.19 Masterhadoop
192.168.1.32 Slave1hadoop
192.168.1.79 Slave2hadoop
设置机器之间免密登录
ubuntu默认安装了ssh,直接使用即可。如果没有安装的话,需要提前安装一下。
我们在各个节点下的~
目录下新建一个‘.ssh’文件夹来存放我们的秘钥。
然后主节点下运行运行:
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa ##运行之后直接回车就好
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys ##将某个秘钥添加为可信,接收到这个host的请求后不再需要输入密码
然后我们将生成的id_rsa.pub使用scp命令拷贝到两个从节点的/tmp(随便一个目录均可)目录下,在/tmp
目录下,运行cat id_rsa.pub >> ~/.ssh/authorized_keys
,这样我们从主节点登录到从节点就免密了,类似的可以设置从节点到主节点的免密。
设置完免密登陆之后在各个机器上登录一下试试,确保设置正确。
二、Hadoop3.2全分布式环境搭建
做完上述的工作之后,基本的环境配置就已经做好了。这时候我们需要从官网中下载对应的安装包(不带src的安装包),拉取之后我们将其解压到目录/user/local
目录下,并且将该目录重命名为hadoop
。同时,我们还需要将hadoop目录设置为hadoop用户所有:sudo chown -R hadoop:hadoop hadoop
。
1. 设置相应的数据目录
这些数据目录是可以自己设置的,只需要在后续的配置中对对应的目录指定就可以,下面使我的配置。
在/usr/local/hadoop
下新建文件夹/tmp
来做我们的临时目录。
sudo mkdir -p /data/hadoop/hdfs/nn #namenode目录
sudo mkdir -p /data/hadoop/hdfs/dn #datanode目录
sudo mkdir -p /data/hadoop/yarn/nm #nodemanager目录
sudo chown -R hadoop:hadoop /data
2. 修改etc/hadoop/workers文件
注意:旧版本以及网上的教程是修改etc/hadoop/slaves
文件,但是新版已经移除了这一个文件,取而代之的是workers
文件,我按照我的配置将该文件内容替换为:
Masterhadoop
Slave1hadoop
Slave2hadoop
上述设置代表我的集群有三个datanode
结点。
3. 修改对应etc/hadoop
下面的其他配置文件:
hadoop_env.sh
export JAVA_HOME=${JAVA_HOME} #设置JAVA_HOME的路径,需要再次指明
export HADOOP_HOME=/usr/local/hadoop
export HDFS_DATANODE_USER=hadoop #运行对应结点的用户名称,因为涉及到文件夹的权限问题,一定要认真设置。
export HDFS_SECONDARYDATANODE_USER=hadoop
export HDFS_NAMENODE_USER=hadoop
export YARN_RESOURCEMANAGER_USER=hadoop
export YARN_NODEMANAGER_USER=hadoop
注意的是,如果之前没有设置JAVA_HOME的环境变量,此处直接这样引用会出现错误,改用绝对路径即可消除错误。
core-site.xml
<configuration><property><name>fs.defaultFS</name><value>hdfs://Masterhadoop:9000</value></property><property><name>hadoop.tmp.dir</name><value>file:/usr/local/hadoop/tmp</value><description>Abase for other temporary directories.</description></property>
</configuration>
上述分别设置了主节点的ip和端口以及临时目录的地址(上面创建的tmp目录)。
hdfs-site.xml
<configuration><property><name>dfs.namenode.secondary.http-address</name><value>Masterhadoop:50090</value></property><property><name>dfs.replication</name><value>2</value></property><property><name>dfs.namenode.name.dir</name><value>file:///data/hadoop/hdfs/nn</value></property><property><name>dfs.datanode.data.dir</name><value>file:///data/hadoop/hdfs/dn</value></property>
</configuration>
设置了相应的目录和端口,注意与上面创建的目录相对应。dfs.replication
代表备份数量,一般设为3,此处我们设为2即可。
mapred-site.xml
<configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property><property><name>mapreduce.jobhistory.address</name><value>Masterhadoop:10020</value></property><property><name>mapreduce.jobhistory.webapp.address</name><value>Masterhadoop:19888</value></property>
</configuration>
yarn-site.xml
<configuration><!-- 指定ResourceManager的地址--><property><name>yarn.resourcemanager.hostname</name><value>Masterhadoop</value></property><!-- 指定reducer获取数据的方式--><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><property><name>yarn.nodemanager.local-dirs</name><value>file:///data/hadoop/yarn/nm</value></property>
</configuration>
4. 从节点设置
我们将hadoop目录拷贝到从节点的对应目录,并且修改为hadoop
用户所有。
仿照主节点对应的数据目录设置,设置对应的数据目录(即/data一系列目录),并设置为hadoop
用户所有。
5. 设置相应的辅助环境变量,方便使用(Hadoop+Spark)
在/etc/profile
下面添加一下环境变量,修改后source /etc/profile
。
export HADOOP_HOME=/usr/local/hadoop
export SPARK_HOME=/usr/local/spark
export PATH="${HADOOP_HOME}/bin:${SCALA_HOME}/bin:${SPARK_HOME}/bin:$PATH"
后续spark也安装在对应的目录下,干脆一块设置了!
6. 启动集群,并验证正确
在sbin
目录下,使用./start-all.sh
脚本启动集群。
启动后运行hdfs dfsadmin -report
查看对应的数据结点是否正确。浏览器输入Materhadoop:8088
就可以看到我们Hadoop的主界面了。
如果没有启动成功,请查看logs
目录下各个节点的日志,查看错误,一般情况都是由于上述的文件设置不正确导致,请仔细查看。
三、Spark3.0全分布式环境搭建
1.下载对应安装包并安装
从官网下载对应资源包并解压至目录usr/local
下面,然后我们更改目录名称为spark,并将其权限设置为hadoop用户所有sudo chown -R hadoop:hadoop spark
2.配置Spark
spark-env.sh配置
将conf
文件夹下的spark-env.sh.template
重命名为spark-env.sh
,并添加以下内容:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
export SCALA_HOME=/usr/share/scala-2.11
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export SPARK_MASTER_HOST=Masterhadoop
export SPARK_LOCAL_DIRS=/usr/local/spark
export SPARK_DRIVER_MEMORY=16g #内存
export SPARK_WORKER_CORES=2 #cpus核心数
上面使我的设置,如果机器内存不大的话,可以适当调小。
slaves设置
将slaves文件替换为:
Masterhadoop
Slave1hadoop
Slave2hadoop
代表我的集群有三个结点。
3.复制到其他结点并启动。
我们将spark目录复制到其他节点的同一个目录下,并设置为hadoop用户所有。设置完成后,我们在sbin
目录下使用start-all.sh
启动集群。
启动成功后,我们在浏览器输入Masterhadoop:8080
看到有三个结点,就代表我们安装成功了。
如果发现启动错误,请查看logs
目录下的日志,自行检查配置文件!
hadoop2.9.2安装hadoop_pid_dir_Hadoop3.2 +Spark3.0全分布式安装相关推荐
- hadoop+hive-0.10.0完全分布式安装方法
hadoop+hive-0.10.0完全分布式安装方法 1.jdk版本:jdk-7u60-linux-x64.tar.gz http://www.oracle.com/technetwork/cn/j ...
- 单机安装 hadoop 环境(Hadoop伪分布式安装)
任务描述: 作为某公司运维工程师,需在单机安装 hadoop 环境(Hadoop伪分布式安装).本环节需要使用 root用户完成相关配置,具体部署要求如下: 1. 关闭虚拟机防火墙 2. 修改&quo ...
- 第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动
第六天 - 安装第二.三台CentOS - SSH免密登陆 - hadoop全分布式安装.配置.集群启动 第六天 - 安装第二.三台CentOS - SSH免密登陆 - hadoop全分布式安装.配置 ...
- win8mysql安装教程zip_mysql 8.0.18.zip安装配置方法图文教程(windows 64位)
关于卸载以前安装版的数据库,大家可以参考一下这篇文章. 卸载前记住一定要记得复制保留以前的数据,安装版的数据是在 mysql5.7所有安装版本卸载教程,建议:大家卸载完一定要重启一下. 目录 1.先去 ...
- mysql 8.0 手动安装教程_mysql 8.0.13手动安装教程
本文为大家分享了mysql 8.0.13手动安装教程,供大家参考,具体内容如下 一.步骤解读 1.下载MySQL 下载地址 选择 Downloads-->Community-->MySQL ...
- mysql8.0.17压缩包安装教程_mysql 8.0.16 压缩包安装配置方法图文教程
本文为大家分享了mysql 8.0.16 压缩包安装配置方法,供大家参考,具体内容如下 运行环境:windows 10 x64 1.下载zip安装包: mysql8.0 for windows zip ...
- mysql典型安装和自定义_Mysql8.0.19下载安装—windows版本自定义安装
一.下载MySQL Community Server 官网下载网址:https://dev.mysql.com/downloads/mysql/ 选择社区版 这里说安装包是32位的,但是看前面跳转的说 ...
- SUSE 11 安装sybase ASE 16.0 SP 02安装全过程
SUSE系统下安装Sybase数据库 参考文档: https://wiki.deepin.io/mediawiki/index.php?title=Sybase_%E5%AE%89%E8%A3%85% ...
- mysql 8免安装图解_mysql 8.0.21免安装版配置方法图文教程
六步安装Mysql(免安装包的才可以选安装位置),供大家参考,具体内容如下 第一步:下载MySQL压缩包 mysql下载路径 直接点击链接也可以下载:mysql 8.0.21 第二步:解压到自己想要安 ...
最新文章
- 《Delphi 算法与数据结构》学习与感悟[3]: 获取一个字节中非空位的个数
- HDLBits 系列(5)让三元条件运算符(?:)在你的设计中发挥作用
- 【cocos2d-x从c++到js】02:解决在vs中修改js源文件无效
- eclipse 中创建maven工程问题(常见)
- Struts2之HttpServletRequest、HttpServletResponse,HttpSession,Parameters处理
- php 基类 是什么,PHP Model基类
- adguard没有核心 core no_新媒体自学宝典(No.24)| 如何借力自媒体平台放大粉丝流量?...
- [转]C/C++语言中值传递、指针传递和引用传递
- [转载] python 列表List中index函数的坑
- [acmm week12]染色(容斥定理+组合数+逆元)
- 教你用Appium搭建Android自动化测试框架(详细教程)
- his系统管理工具配置服务器,HIS系统(his管理系统)V3.0.1 官网版
- 微信公众号注册免费教程
- 【BZOJ 3687】简单题
- Jacob操作Word文档插入表格并表格中插入图片案例
- 让注册表修改快速生效
- 嵌入式应用角度学习BLE栈
- 管理启示:“幸福的小狐狸”
- 计算机一级2021excel,2021年计算机一级EXCEL操作题-20210514115911.doc-原创力文档
- H13-531云计算HCIE V2.0——1~400常错题和知识点总结
热门文章
- 基于OpenCV文字特征提取
- 【信息系统项目管理师】第10章 上篇-项目沟通管理 知识点详细整理
- Ubuntu18.04卸载显卡driver历险记
- WSL2.0解决:/bin/bash: xsel: command not found
- Win10 WSL adb使用
- 高通msm8953 Android7.1支持Audio设备列表(十二)
- 深度学习自学(三十八):基于交互式双流解码器图像显著性检测
- 计算机基础(一):ION IOMMU 内存申请
- 修改Ubuntu系统的用户名和主机名、创建和删除用户
- python3.3.2_Python代码2转3、3转2的方法