Hadoop3.1.0完全分布式集群部署超详细记录
Hadoop3.1.0完全分布式集群部署,三台服务器部署结构如下github配置文件源码地址
#部署完成后
root@servera:/opt/hadoop/hadoop-3.1.0# jps
14056 SecondaryNameNode
14633 Jps
13706 NameNode
14317 ResourceManager
root@serverb:~# jps
5288 NodeManager
5162 DataNode
5421 Jps
root@serverc:~# jps
4545 NodeManager
4371 DataNode
4678 Jps
如上图,一共三台机器作为集群,servera作为master,其他两台作为worker。
2.开始部署-前期准备(三台机器都需要进行如下操作)
- 2.1.配置hosts文件【三台】
vim /etc/hosts
10.80.80.110 servera
10.80.80.111 serverb
10.80.80.112 serverc
- 2.2.jdk 安装【三台】
- 下载jdk
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u172-b11/a58eab1ec242421181065cdc37240b08/jdk-8u172-linux-x64.tar.gz
- 解压
mkdir /opt/java wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u172-b11/a58eab1ec242421181065cdc37240b08/jdk-8u172-linux-x64.tar.gz tar -zxf jdk-8u172-linux-x64.tar.gz mv jdk1.8.0_172/ /opt/java/
- 配置JAVA变量
vim /etc/profile.d/jdk-1.8.sh #!/bin/sh # Author:wangxiaolei 王小雷 # Blog: http://blog.csdn.net/dream_an # Github: https://github.com/wangxiaoleiai # web: www.xiaolei.wang # Date: 2018.05 # Path: /etc/profile.d/ export JAVA_HOME=/opt/java/jdk1.8.0_172 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH # 使环境变量生效 source /etc/profile # 查看 Java java --version
- 2.3.pdsh、ssh安装【三台】
root@servera:~# apt install ssh pdsh
echo ssh>/etc/pdsh/rcmd_default
- 2.4.免密码登录自身【三台】
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys
ssh localhost(首次需输入yes)
- 2.5.servera免密码登录其他机器(master免密码登录worker)【单台,只需在servera上执行】
ssh-copy-id -i ~/.ssh/id_rsa.pub servera
ssh-copy-id -i ~/.ssh/id_rsa.pub serverb
ssh-copy-id -i ~/.ssh/id_rsa.pub serverc
3.hadoop3+配置文件 github配置文件源码地址
共需要配置/opt/hadoop/hadoop-3.1.0/etc/hadoop/下的六个个文件,分别是
hadoop-env.sh、core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml、workers
- 3.1. hadoop-env.sh 添加如下内容
export JAVA_HOME=/opt/java/jdk1.8.0_172/
export HDFS_NAMENODE_USER="root"
export HDFS_DATANODE_USER="root"
export HDFS_SECONDARYNAMENODE_USER="root"
export YARN_RESOURCEMANAGER_USER="root"
export YARN_NODEMANAGER_USER="root"
- 3.2. core-site.xml
<configuration>
<!-- 指定hdfs的nameservice为ns1 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ruizhia:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
</configuration>
- 3.3. hdfs-site.xml
<configuration>
<!-- Configurations for NameNode: -->
<property>
<name>dfs.namenode.name.dir</name>
<value>/var/lib/hadoop/hdfs/name/</value>
</property>
<property>
<name>dfs.blocksize</name>
<value>268435456</value>
</property>
<property>
<name>dfs.namenode.handler.count </name>
<value>100</value>
</property>
<!-- Configurations for DataNode: -->
<property>
<name>dfs.datanode.data.dir</name>
<value>/var/lib/hadoop/hdfs/data/</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
- 3.4. yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<!-- Configurations for ResourceManager and NodeManager: -->
<!-- Configurations for ResourceManager: -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>servera</value>
</property>
<!-- 配置外网只需要替换外网ip为真实ip,否则默认为 localhost:8088 -->
<!-- <property>
<name>yarn.resourcemanager.webapp.address</name>
<value>外网ip:8088</value>
</property> -->
<!-- Configurations for NodeManager: -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- Configurations for History Server (Needs to be moved elsewhere): -->
</configuration>
- 3.5. mapred-site.xml
<configuration>
<!-- Configurations for MapReduce Applications: -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
- 3.6. workers
serverb
serverc
4. 复制Hadoop文件到其他集群、配置Hadoop环境变量、格式化hdfs、开启集群、查看、关闭、重置集群
- 4.1. 将步骤3配置好的hadoop文件复制到其他同样位置的机器上 /opt/hadoop/hadoop-3.1.0
- 4.2 配置Hadoop环境变量【三台机器都操作】
vim /etc/profile.d/hadoop-3.1.0.sh
#!/bin/sh
# Author:wangxiaolei 王小雷
# Blog: http://blog.csdn.net/dream_an
# Github: https://github.com/wangxiaoleiai
# Date: 201805
# web: www.xiaolei.wang
# Path: /etc/profile.d/
export HADOOP_HOME="/opt/hadoop/hadoop-3.1.0"
export PATH="$HADOOP_HOME/bin:$PATH"
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
source /etc/profile
- 4.3. 格式化HDFS [只有首次部署才可使用]【谨慎操作,只在servera上操作】
/opt/hadoop/hadoop-3.1.0/bin/hdfs namenode -format myClusterName
- 4.4. 开启 【只在servera上操作】
/opt/hadoop/hadoop-3.1.0/sbin/start-dfs.sh
/opt/hadoop/hadoop-3.1.0/sbin/start-yarn.sh
- 4.5. 查看 【三台】
jps
- 4.6. web端localhost:8088查看【localhost只定servera的localhost,也可以换成外网ip,在详见步骤3.4. yarn-site.xml 】
- 4.7. 关闭 【只在servera上操作】
/opt/hadoop/hadoop-3.1.0/sbin/stop-dfs.sh
/opt/hadoop/hadoop-3.1.0/sbin/stop-yarn.sh
- 4.8. 重置hadoop环境 [移除hadoop hdfs log文件] 【谨慎操作,只在servera上操作】
rm -rf /opt/hadoop/hadoop-3.1.0/logs/*
rm -rf /var/lib/hadoop/
5.遇到的坑 pdsh@servera: servera: connect: Connection refused
root@servera:/opt/hadoop/hadoop-3.1.0# sbin/start-dfs.sh Starting namenodes on [servera] pdsh@servera: servera: connect: Connection refused Starting datanodes pdsh@servera: serverc: connect: Connection refused pdsh@servera: serverb: connect: Connection refused Starting secondary namenodes [servera] pdsh@servera: servera: connect: Connection refused
- 解决方法步骤2.3中
echo ssh>/etc/pdsh/rcmd_default
- scrapy爬取免费代理IP存储到数据库构建自有IP池
- 每天一个Linux命令:netstat
- Hadoop - MapReduce
- 进击的爬虫:用Python搭建匿名代理池
- 计算机程序的思维逻辑 (5) - 小数计算为什么会出错?
- QQ空间爬虫最新分享,一天 400 万条数据
- 计算机程序的思维逻辑 (4) - 整数的二进制表示与位运算
- Python中典型内建函数的用法
- 软件开发接力赛的最后一棒:上线发布
- 计算机程序的思维逻辑 (3) - 基本运算
- 突破反爬虫的利器——开源IP代理池
- VUE中的v-if与v-show
- 基于Redis的Bloomfilter去重
- 使用Python分析nginx日志
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 你被追尾了
- 深入理解JavaScript作用域
- 《闲扯Redis七》Redis字典结构的底层实现
- 深入理解JavaScript闭包之什么是闭包
- 按需取余
- Cypress 获取table内容动态tr和td
- Java 并发编程之 ConcurrentHashMap 源码分析(小长文)
- python的安装
- 【源码分析】SpringBoot2中取代Druid的超级连接池:HikariCP之ConcurrentBag
- HTML5项目实战之旅行社网站——PC端固定布局
- HTML5项目实战之旅行社网站——移动端流体布局
- HTML5项目实战之旅行社网站——兼容响应式布局
- Oracle数据库相关函数解析
- Oracle用户操作、数据类型、表格修改、约束设置详解
- MyBatis三个查询方法_selectList_selectOne_selectMap