华为云服务器安装hadoop2.7.5
1. 安装环境
1.1硬件环境
1.1.1 NameNode
| 配置项 | 详细参数 |
|---|---|
| 主机 | k8s-master |
| CPU | Intel(R) Xeon(R) Gold 6278C CPU @ 2.60GHz 2核 |
| 内存 | 4G |
| 硬盘 | 40G |
1.1.2 DataNode
| 配置项 | 详细参数 |
|---|---|
| 主机 | k8s-slave1 |
| CPU | Intel(R) Xeon(R) Gold 6278C CPU @ 2.60GHz 2核 |
| 内存 | 4G |
| 硬盘 | 40G |
1.2 软件环境
| 配置项 | 详细参数 |
|---|---|
| 操作系统 | centos 7.7 |
| jdk | 8 |
| hadoop | 2.7.5 |
2. 安装步骤
2.1 安装前准备
2.1.1 配置主机名
2.1.1.1 修改主机名
[root@root ~]# hostnamectl set-hostname k8s-master
[root@root ~]# more /etc/hostname
k8s-master
reboot服务器会显示新设置的主机名k8s-master,在另外一台服务器做同样的操作。
2.1.1.2 修改hosts文件 (注意:云服务器中,只有一块内网网卡。外网地址不是直接配置在云服务器中,程序无法绑定公网IP地址。因此服务器本身要改为"内网IP+主机名"。不然在可能会在NameNode启动时报错:Cannot assign requested address)
[root@k8s-master ~]# cat >> /etc/hosts << EOF
xxx.xxx.xxx.xxx k8s-master
xxx.xxx.xxx.xxx k8s-slave1
EOF
2.1.1.3 免密登录
配置k8s-master到k8s-slave1之间免密登录
- 创建秘钥
[k8s-master ~]# ssh-keygen -t rsa
- k8s-master同步秘钥到k8s-slave1,主机名免密也要同步
[k8s-master ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@xxx.xxx.xxx.xxx
- 免密登录测试
[k8s-master ~]# ssh xxx.xxx.xxx.xxx
[k8s-master ~]# ssh k8s-slave1
2.1.1.4 禁用selinux
各节点都要执行禁用selinux操作
# 临时禁用selinux
[root@k8s-master ~]# setenforce 0
# 永久禁用selinux
[root@k8s-master ~]# vim /etc/selinux/config
SELINUX=disabled
2.1.1.5 关闭防火墙
各节点上执行关闭防火墙操作
[k8s-master ~]# systemctl stop firewalld
[k8s-master ~]# systemctl disable firewalld
3. 安装hadoop
我通常在安装完NameNode后直接把配置目录都会发送到其他机器上同步一份,不需要所有机器都手动配置一次,这样可以提高效率。PS:以下操作都是在root用户下操作。
3.1 下载地址
hadoop的官方网站:http://hadoop.apache.org/
hadoop 2.7.5版本对应的下载地址: http://archive.apache.org/dist/hadoop/core/hadoop-2.7.5/
3.2 解压安装包
[root@k8s-master ~]# cd /opt/
# 下载安装包
[root@k8s-master opt]# wget http://archive.apache.org/dist/hadoop/core/hadoop-2.7.5/hadoop-2.7.5.tar.gz
[root@k8s-master opt]# tar -zxf hadoop-2.7.5.tar.gz
# 做软链接
[root@k8s-master opt]# ln -s hadoop-2.7.5 hadoop
3.3 修改hadoop-env.sh配置文件
3.3.1 配置java的jdk
[root@k8s-master ~]# vim /opt/hadoop/etc/hadoop/hadoop-env.sh
#找到"export JAVA_HOME"这行,用来配置jdk路径
# The java implementation to use.
export JAVA_HOME=/opt/jdk1.8.0_161/
3.3.2 配置核心组件
3.3.2.1 core-site.xml(在NameNode节点上操作)
[root@k8s-master ~]# vim /opt/hadoop/etc/hadoop/core-site.xml
# 在<configuration>和</configuration>之间加入的代码,我的主机名是k8s-master
<property>
<name>fs.defaultFS</name>
<value>hdfs://k8s-master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/hadoopdata</value>
</property>
3.3.3 配置文件系统
3.3.3.1 hdfs-site.xml(在NameNode节点上操作)
[root@k8s-master ~]# vim /opt/hadoop/etc/hadoop/hdfs-site.xml
# 需要在<configuration>和</configuration>之间加入的代码
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
3.3.4 配置MapReduce计算框架文件(在NameNode节点上操作)
[root@k8s-master ~]# cp /opt/hadoop/etc/hadoop/mapred-site.xml.template /opt/hadoop/etc/hadoop/mapred-site.xml
[root@k8s-master ~]# vim /opt/hadoop/etc/hadoop/mapred-site.xml
# 需要在<configuration>和</configuration>之间加入的代码
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
3.3.5 配置资源调度管理器
3.3.5.1 配置yarn-site.xml
[root@k8s-master ~]# vim /opt/hadoop/etc/hadoop/yarn-site.xml
# 需要在<configuration>和</configuration>之间加入的代码,我的主机名是k8s-master
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>k8s-master:18040</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>k8s-master:18030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>k8s-master:18025</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>k8s-master:18141</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>k8s-master:18088</value>
</property>
3.3.5.2 修改yarn-env.sh文件
[root@k8s-master ~]# vim /opt/hadoop/etc/hadoop/hadoop-env.sh
#找到"export JAVA_HOME"这行,用来配置jdk路径
# some Java parameters
export JAVA_HOME=/opt/jdk1.8.0_161/
3.3.6 修改slaves配置文件
该slaves文件是给出了hadoop集群中的slave列表,系统总是根据当前slaves文件中的slave节点列表启动hadoop集群,不在列表中的slave节点便不会被视为计算节点。
[root@k8s-master ~]# vim /opt/hadoop/etc/hadoop/slaves
# 需要在slaves文件中添加以下主机名(PS: 删掉localhost那一行)
k8s-slave1
3.3.7 将配置文件发送到DataNode节点上
[root@k8s-master ~]# scp -r /opt/hadoop root@k8s-slave1:/opt
4. 启动hadoop
4.1 启动前准备,配置操作系统环境变量(所有节点都要操作)
[root@k8s-master ~]# vim /root/.bash_profile
# 添加以下内容
# hadoop
export HADOOP_HOME=/opt/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
[root@k8s-master ~]# source ~/.bash_profile
4.2 创建hadoop数据目录(只在master节点上操作)
[root@k8s-master ~]# mkdir -p /opt/hadoop/hadoopdata
4.3 格式化文件系统(只在master上操作)
[root@k8s-master ~]# cd /opt/hadoop/bin
[root@k8s-master ~]# ./hdfs namenode -format
4.4 启动和关闭集群(只在master节点上操作)
4.4.1 启动hadoop集群
[root@k8s-master ~]# cd /opt/hadoop/sbin
[root@k8s-master ~]# sh start-all.sh
PS: 执行命令后,系统提示 ” Are you sure want to continue connecting(yes/no)”,输入yes,之后系统即可启动。执行过程可能会有些慢,千万不要以为卡掉了,然后强制关机,这是错误的。
4.4.2 关闭hadoop集群
[root@k8s-master ~]# cd /opt/hadoop/sbin
[root@k8s-master ~]# sh stop-all.sh
PS: 下次启动Hadoop时,无须NameNode的初始化,只需要使用start-dfs.sh命令即可,然后接着使用start-yarn.sh启动Yarn。实际上,Hadoop建议放弃(deprecated)使用start-all.sh和stop-all.sh一类的命令,而改用启动start-dfs.sh和start-yarn.sh命令
4.4.3 验证hadoop集群是否正常启动
1) 在NameNode上执行:(如果看到NameNode、ResourceManager、SecondaryNameNode,说明进程启动正常)
[root@k8s-master ~]# jps
14689 NameNode
15042 ResourceManager
14882 SecondaryNameNode
4309 Jps
1037 WrapperSimpleApp
2) 在DataNode上执行:(如果看到NodeManager、DataNode,说明进程启动正常)
[root@k8s-slave1 ~]# jps
19794 NodeManager
19636 DataNode
14251 Jps
1279 WrapperSimpleApp
5. 遇到的问题
5.1 hadoop启动之后datanode进程在,但50070页面Live Nodes为0,且看不到DataNode的所有信息,日志提示如下:
2020-08-28 22:06:45,427 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Problem connecting to server: localhost/127.0.0.1:9000
2020-08-28 22:06:51,428 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 0 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)
问题定位:
1) /etc/hosts 中的ip映射不对
2) master与slave之间不能互通
3) hadoop配置文件有错
我这里是由于/etc/hosts里面配置的ip和hosts的映射有误,原来配置的外网ip,改成内网ip映射主机名即可。
华为云服务器安装hadoop2.7.5的更多相关文章
- 华为鲲鹏服务器安装 k3s+rancher
华为鲲鹏服务器安装 k3s+rancher 华为鲲鹏服务器 华为鲲鹏服务器采用华为自研cpu ARMv8架构,提供 Windows 和多个Linux 系统,作为服务器使用我一直使用Centos系统(不 ...
- springboot +jsp项目打包部署到华为云服务器
注:打包之前先保证你的项目本地运行没问题. 一.打包 打包有两种方式,打成jar包和打成war包.因为springboot有内置的服务器,所以选择打成jar包,这样云服务器就不用装tomcat了. 打 ...
- 如何在华为云软件开发云上搭建JavaWeb,Maven项目
本文将使用华为云软件开发云向大家演示如何搭建JavaWeb,Maven项目. 一.相关信息 1.华为云软件开发云简介 华为云软件开发云(DevCloud)是集华为近30年研发实践,前沿研发理念,先进研 ...
- 华为云照片的爬虫程序更新(python3.6)
一.背景: 每年终都有一个习惯,就是整理资料进行归档,结果发现手机照片全备份在华为云里,在官网上找了一圈,没找到官方的pc工具用来同步照片. 于是找出上次写的程序,看看能不能爬到数据,然而……果然不好 ...
- 华为云(ECS)-linux服务器中-Ubuntu图形界面安装-解决root登录受限-VNCviwer/Teamviwer远程访问教程
安装ubuntu-desktop .更新软件库 apt-get update .升级软件 apt-get upgrade .安装桌面 apt-get install ubuntu-desktop 解决 ...
- 华为云.NET Core支持情况调查
各大公有云都提供了开发者开发的SDK,今天我们来看看华为云对.NET Core的支持情况怎么样? .NET SDK地址 https://developer.huaweicloud.com/sdk#.N ...
- 华为云提供针对Nuget包管理器的缓存加速服务
在Visual Studio 2013.2015.2017中,使用的是Nuget包管理器对第三方组件进行管理升级的.而且 Nuget 是我们使用.NET Core的一项基础设施,.NET的软件包管理器 ...
- 华为云的API调用实践(python版本)
一.结论: 1.华为云是符合openstack 社区的API,所以,以社区的API为准.社区API见下面的链接. https://developer.openstack.org/api-ref/net ...
- 华为云服务器为Tomcat配置SSL
近期由于开发小程序需要在云服务器上配置https访问协议,也遇到了一点小问题,把配置过程记录一下:SSL 证书申请下来之后会有 .jks .crt .pfx .pem为后缀的文件(如何申请SSL证书这 ...
随机推荐
- PDO::getAvailableDrivers
PDO::getAvailableDrivers — 返回一个可用驱动的数组(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0) 说明 语法 static array P ...
- c# Dictionary的使用
创建: Dictionary<string, OverCaseData> dataDic = new Dictionary<string, OverCaseData>() ...
- luogu P4884 多少个1?
LINK:多少个1? 题目要求:\(\sum_{i=0}^{n-1}10^i \equiv k \mod m\) 最小的n. 看起来很难求的样子 这个同余式 看起来只能暴力枚举. 不过既然是同余 我们 ...
- LeetCode(1)---检查括号出现的合法性
题目: 检查字符串中"( )","[ ]","{ }" 的合法性,即是否成对出现 eg,如出现"[()]", ...
- 11-Arrays工具类的使用
1.理解:① 定义在java.util包下.② Arrays:提供了很多操作数组的方法. 2.使用: //1.boolean equals(int[] a,int[] b):判断两个数组是否相等. i ...
- slots属性(省内存,限制属性的定义)
class Foo: __slots__=['name','age'] #{'name':None,'age':None} # __slots__='name' #{'name':None,'age' ...
- CSS变化、过渡与动画
CSS变换用于在空间中移动物体,而CSS过渡和CSS关键帧动画用于控制元素随时间推移的变化. 变换.过渡和关键帧动画的规范仍然在制定中.尽管如此,其中大多数特性已经在常用浏览器中实现了. 1.二维变换 ...
- Python datetime 转 JSON
Python datetime 转 JSON Python 中将 datetime 转换为 JSON 类型,在使用 Django 时遇到的问题. 环境: Python2.7 代码: import js ...
- Python学习笔记之 Python设计思想&设计原则
Python设计思想&设计原则 设计思想 1.封装 数据角度 多种数据合为一种数据 优势:代码可读性高 将数据与行为相关联 例如:电脑(内存,储存空间,...) 行为角度 ...
- Vue中v-model指令的常用修饰符
v-model指令有三个可以选用的修饰符:.lazy..number以及.trim.vue官方对此的描述为: .number-输入字符串转为有效的数字 .lazy-取代input监听change事件 ...