美文网首页
云服务器配置hadoop完全分布式

云服务器配置hadoop完全分布式

作者: 刀拉 | 来源:发表于2020-05-11 21:25 被阅读0次

centOS7.5+jdk8+hadoop3

vim的一些简单命令

i      ---插入进行修改
esc  ---返回
:wq  ---退出并保存

修改主机名
阿里云-master
腾讯云-worker1
百度云-worker2

hostnamectl set-hostname master
hostnamectl set-hostname worker1
hostnamectl set-hostname worker2

修改host文件

vi /etc/hosts

在阿里云服务器中,编辑/etc/hosts文件:
47.98.xx.xxx master     ---阿里云私网IP地址    主机名
a21.b21.c21.d21 worker1    ---腾讯云公网IP地址    主机名
a21.b21.c21.d21 worker2    ---百度云公网IP地址    主机名

在腾讯云服务器中,编辑/etc/hosts文件:
a11.b11.c11.d11 master    ---阿里云公网IP地址    主机名
a22.b22.c22.d22 worker1   --腾讯云私网IP地址    主机名
a21.b21.c21.d21 worker2    ---百度云公网IP地址    主机名

在百度云服务器中,编辑/etc/hosts文件:
xx.xx.xx.xxx master     ---阿里云公网IP地址    主机名
a21.b21.c21.d21 worker1    ---腾讯云公网IP地址    主机名
a21.b21.c21.d21 worker2    ---百度云私网IP地址    主机名

关闭所有节点的防火墙

sudo systemctl stop firewalld.service # 关闭firewall
sudo systemctl disable firewalld.service # 禁止firewall开机启动

ssh免密码登录

[root@master ~]# ssh-keygen -t rsa # 一路回车即可
[root@master ~]# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 
[root@master ~]# chmod 0600 ~/.ssh/authorized_keys
[root@master ~]# scp ~/.ssh/authorized_keys root@worker1:~/.ssh
[root@master ~]# scp ~/.ssh/authorized_keys root@worker2:~/.ssh 

ssh localhost  此时没有密码就能登录
ssh worker1
ssh worker2
image.png
官网下载jdk很慢:
华为有个镜像可以下载:https://repo.huaweicloud.com/java/jdk/
hadoop下载地址
http://mirrors.hust.edu.cn/apache/hadoop/common
下载文件到/home文件夹下,
cd /home
cd /home    进入home文件夹,
tar -zvxf jdk-8u201-linux-x64.tar.gz     解压jdk
mv jdk1.8.0_201 java       重命名解压后的文件夹
tar -zvxf hadoop-3.1.3.tar.gz       解压hadoop
mv hadoop-3.1.3 hadoop
vim /etc/profile  设置环境变量
export JAVA_HOME=/home/java
export HADOOP_HOME=/home/hadoop
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile   是环境变量生效
查看一下Hadoop和Java是不是配置好了

worker1和worker2也用同样的方法配置

$HADOOP_HOME/etc/hadoop/目录下
配置hadoop-env.sh

export JAVA_HOME=/home/java
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

core-site.xml

<configuration>
   <property>
      <name>fs.default.name</name>
      <value>hdfs://master:9000</value>
      <description>文件系统URL,3个一样</description>
   </property>
   <property>
      <name>io.file.buffer.size</name>
      <value>131072</value>
  </property>
  <property>
       <name>hadoop.tmp.dir</name>
       <value>/var/log/hadoop/tmp</value>
       <description>A base for other temporary directories</description>
   </property>
</configuration>

hdfs-site.xml

<configuration>
<property>
      <name>dfs.namenode.secondary.http-address</name>
      <value>worker1:50090</value>
      <description>Secondary名称节点的URL</description>
   </property>

   <property>
      <name>dfs.namenode.name.dir</name>
      <value>file:///opt/hadoop/dfs/name </value>
      
   </property>
 <property>
      <name>dfs.datanode.data.dir</name>
      <value>file:///opt/hadoop/dfs/data </value>
      
   </property>
<property>
      <name>dfs.replication</name>
      <value>2</value>
      <description>每个文件复制2块</description>
   </property>
 <property>
         <name>dfs.heartbeat.interval</name>
          <value>5</value>

          <description>默认值</description>
   </property>
<property>
     <name>dfs.namenode.datanode.registration.ip-hostname-check</name>
     <value>false</value>
</property>
</configuration>

yarn-site.xml

<configuration>
<!-- Reducer获取数据的方式 -->
<property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
</property>

<!-- 指定YARN的ResourceManager的地址 -->
<property>
       <name>yarn.resourcemanager.webapp.address</name>
       <value>master:8088</value>
</property>
<property>
        <name>yarn.nodemanager.env-whitelist</name>
        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</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>
</configuration>

mapred-site.xml

<configuration>
<property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
      <description>选择用yarn来管理</description>
   </property>
   
</configuration>

在worker文件加入datanode节点的主机名
在master配好之后,发送到worker1和worker2

scp $HADOOP_HOME/etc/hadoop/* root@worker1:$HADOOP_HOME/etc/hadoop/
scp $HADOOP_HOME/etc/hadoop/* root@worker2:$HADOOP_HOME/etc/hadoop/
hdfs namenode -format
start-all.sh
stop-all.sh

遇到的一个大坑 ,要在云服务器配置安全组,开始只配置了自己笔记本ip加入安全组,可以在本地访问hadoop集群的网站,但是却发现没有datanode几点,查看worker1的日志,一直在重试连接master,看了各种博客,各种说法,格式化多次导致ID不匹配,防火墙没关,检查一遍又一遍,都没有问题,结果发现是worker1和worker2 的IP没有加到master的安全组!!!!!累死我了


image.png

相关文章

网友评论

      本文标题:云服务器配置hadoop完全分布式

      本文链接:https://www.haomeiwen.com/subject/qlllhhtx.html