当前位置:   article > 正文

阿里云部署hadoop集群_阿里云块存储部署hdfs

阿里云块存储部署hdfs

题记: 好记性不如烂笔头。搞一个稳定的hadoop部署方式,给以后的人生省点打游戏的时间。

环境介绍

两台阿里云服务器server1,server2,还有一台华为云服务器

准备

将两台阿里云服务器器分别记为:master,slave1;将华为云服务器记为slave2。
masterip,masterip_分别表示master的公网ip和内网ip;
slave1ip表示slave1的公网ip;
slave2ip表示slave2的公网ip;

第一步:服务器间ssh无密码登录

1.1 更改/etc/hosts文件

master的hosts文件做如下更改:

vim /etc/hosts
  • 1

在这里插入图片描述
slave1的hosts文件如下更改
在这里插入图片描述
slave2的hosts文件如下更改
在这里插入图片描述
注意看:(1)master和slave1后面都跟了一个很长的字符串,那是服务器的hostname,可以通过hostname命令进行查看。这一步很关键,不然启动的时候会报错。
(2)127.0.0.1要注释掉。(3)master的hosts文件里用的是本地地址,不然hdfs的web端无法正常启动,会报端口占用错误。
在这里插入图片描述

1.2 各个服务器间ssh无密码登录

ssh-keygen
ssh-copy-id master
ssh-copy-id slave1
ssh-copy-id slave2
  • 1
  • 2
  • 3
  • 4

注意:每一台服务器上都要执行以上的代码。

第二步:创建hadoop的工作空间并下载资源

(1)在每一台的服务器上都创建下面的三个文件夹(一般阿里云外挂载的硬盘都是对应home文件夹,所以比较大)。

mkdir -p  /home/export/softwares
mkdir -p /home/export/data
mkdir -p /home/export/servers
  • 1
  • 2
  • 3

(2)在master/slave1/slave2的 /home/export/softwares文件夹下下载hadoop并解压。(很多的教程里说在master上解压并配置好,再通过scp传到其他的服务器上,个人觉得那样的方法太慢,还是传压缩吧比较快)

cd /export/softwares
wget https://archive.apache.org/dist/hadoop/common/hadoop-3.3.3/hadoop-3.3.3.tar.gz
tar zxvf hadoop-3.3.3.tar.gz
  • 1
  • 2
  • 3

(3)在/home/export/servers下下载jdk环境
jdk1.8.0.3.3的阿里云盘地址如下:
链接:https://pan.baidu.com/s/1HsMjOM61BxZFnzPQPKd_2Q
提取码:qnbm
用tar解压即可

第三步:配置

对master上/home/export/softwares/hadoop-3.3.3/etc/hadoop文件夹下的文件做如下的更改:
(1)core-site.xml

<configuration>
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://master:9999</value>
    <description>表示HDFS的基本路径</description>
</property>
<property>
   <name>hadoop.tmp.dir</name>
   <value>/home/dhfs/tmp</value>
</property>
</configuration>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

(2)hdfs-site.xml

<property>
    <name>dfs.replication</name>
     <value>1</value>
     <description>表示数据块的备份数量,不能大于DataNode的数量</description>
</property>
<property>
     <description>表示数据块的备份数量,不能大于DataNode的数量</description>
</property>
<property>
    <name>dfs.replication</name>
     <value>1</value>
     <description>表示数据块的备份数量,不能大于DataNode的数量</description>
</property>
<property>
    <name>dfs.namenode.name.dir</name>
    <value>/home/export/data/dfs/name</value>
    <description>表示 NameNode 需要存储数据的文件目录</description>
</property>
<property>
    <name>dfs.namenode.http-address</name>
    <value>master:50070</value>
    <description>web访问端口</description>
</property>
<property>
    <name>dfs.datanode.data.dir</name>
    <value>/home/export/data/dfs/data</value>
    <description>表示 DataNode 需要存放数据的文件目录</description>
</property>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

(3) mapred-site.xml

 <property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
  <description>向yarn申请资源</description>
</property>
  <property>
    <name>yarn.app.mapreduce.am.env</name>
    <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
  </property>
  <property>
    <name>mapreduce.map.env</name>
    <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
  </property>
  <property>
    <name>mapreduce.reduce.env</name>
    <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
  </property>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

(4)在yarn-site.xml中添加如下:

<configuration>

<!-- Site specific YARN configuration properties -->
 <property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>        
 </property>
 
<property>
   <name>yarn.scheduler.minimum-allocation-mb</name>
   <value>2000</value>
</property>
<property>
   <name>yarn.scheduler.maximum-allocation-mb</name>
   <value>3000</value>
</property>

</configuration>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

敲黑板!
注意了,如果你是本地伪分布式,上面对于cpu呀,memery的设定是没有问题的。但是如果要是是真分布式,并且启动mapreduce程序后,程序一直停留在map0%,reduce0%,那你就需要把那些配置给删了。即利用如下 的配置:

<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>        
 </property>

 <property>
	<name>yarn.resourcemanager.hostname</name>
	<value>master</value>        
 </property>
<property>
  <name>yarn.resourcemanager.address</name>
  <value>master:8032</value>
</property>
<property>
  <name>yarn.resourcemanager.scheduler.address</name>
  <value>master:8030</value>
</property>
<property>
  <name>yarn.resourcemanager.resource-tracker.address</name>
  <value>master:8031</value>
</property>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

(5)在hadoop-env.sh添加java环境和用户

export JAVA_HOME=/home/export/servers/jdk1.8.0_333
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export HDFS_RESOURCEMANAGER_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_PREFIX}/lib/native  
export HADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib" 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

(6)在slaves和workers中分别添加

slave1
slave2
  • 1
  • 2

(7)将配置文件拷贝到其他服务器

scp /home/export/softwares/hadoop-3.3.3/etc/hadoop root@slave1:/home/export/softwares/hadoop-3.3.3/etc/
  • 1

第四步 将hadoop添加到~/.bash_profile目录

export HADOOP_HOME=/home/export/softwares/hadoop-3.3.3
PATH=$PATH:$HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export PATH
  • 1
  • 2
  • 3

第五步 开开心心初始化并启动

(1)master上初始化

hadoop datanode -format
  • 1

在master上启动服务

start-all.sh#启动所有hadoop服务
stop-all.sh #关闭所有hadoop服务

start-dfs.sh#启动hdfs服务
stop-dfs.sh #关闭hdfs服务

start-yarn.sh#启动yarn服务
stop-yarn.sh #关闭yarn服务
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

正常启动之后,jps会显示如下的信息:
在这里插入图片描述

如果你发现没有dataNode,恭喜看我的另一篇博客:
https://blog.csdn.net/weixin_41806489/article/details/124933087

(2)运行一个mapreduce程序
这里以pi程序为例子。


(base) [root@izwz9ibvmgmcwvl62wc3jtz mapreduce]# hadoop jar hadoop-mapreduce-examples-3.3.3.jar pi 4 4
Number of Maps  = 4
Samples per Map = 4
2022-05-24 21:44:54,115 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Wrote input for Map #0
Wrote input for Map #1
Wrote input for Map #2
Wrote input for Map #3
Starting Job
2022-05-24 21:44:56,062 INFO client.DefaultNoHARMFailoverProxyProvider: Connecting to ResourceManager at master/172.16.42.255:8032
2022-05-24 21:44:56,529 INFO mapreduce.JobResourceUploader: Disabling Erasure Coding for path: /tmp/hadoop-yarn/staging/root/.staging/job_1653399531805_0001
2022-05-24 21:44:57,070 INFO input.FileInputFormat: Total input files to process : 4
2022-05-24 21:44:57,221 INFO mapreduce.JobSubmitter: number of splits:4
2022-05-24 21:44:57,759 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1653399531805_0001
2022-05-24 21:44:57,759 INFO mapreduce.JobSubmitter: Executing with tokens: []
2022-05-24 21:44:57,920 INFO conf.Configuration: resource-types.xml not found
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

如果报错:
The reported blocks 150 has reached the threshold 0.9990 of total blocks 150. The minimum number of live datanodes is not required. In safe mode extension. Safe mode will be turned off automatically in 9 seconds. NamenodeHostName:maste
则关闭安全模式:

 hdfs dfsadmin -safemode leave
  • 1

后记
记得有问题及时看log文件,可能有一堆的端口不通,这时候要第一时间去阿里云控制台开通。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/651205
推荐阅读
相关标签
  

闽ICP备14008679号