Centos7搭建hadoop3.0的完全分布式环境

本文详细介绍了如何在Centos7系统中搭建Hadoop3.0的完全分布式环境,包括分配IP、ssh免密码登录、安装jdk、下载与配置Hadoop3.0、解决启动问题等步骤,适合初学者参考。
摘要由CSDN通过智能技术生成

前言

花了两天的时间从无到有撸出了一个能启动的版本,遇到的最大的问题是hadoop3.0版本,在master启动
时,slave没有反应。

分配IP

先在稿纸上分化好IP和名称,以可以连接外网 互相通Ping为完成目标

IP名称
192.168.235.11master
192.168.235.12slave1
192.168.235.13slave2

如何给物理机/虚拟机分配IP大牛的文章已经有很多了,我就不再多说,我借鉴的这篇博客的内容,致谢。

Centos7下设置静态IP 环境VMWare12.5.0

再将上表写入到/etc/hosts下面(PS:每个都要写)
hosts
分别在对应IP的虚拟机上修改名称

vi /etc/hostname

例如master

追加一句

HOSTNAME=master

然后reboot虚拟机

ssh免密码登录

在所有虚拟机上分别运行

ssh-keygen –t rsa

三次回车生成密钥
在master上操作:
打开 ~/.ssh ,有两个文件id_rsa 私钥, id_rsa.pub 公钥

cat id_rsa.pub >> authorized_keys

生成认证的key,再用下面的命令将key发给各个slave

scp authorized_keys root@slave1:~/.ssh/authorized_keys
scp authorized_keys root@slave2:~/.ssh/authorized_keys

再给所有虚拟机上的authorized_keys添加权限

chmode 644 ~/.ssh/authorized_keys

即可完成master到其他节点的免密码登录,如果需要另一部主机也可免密码登录到其他电脑,用cat命令将另一部主机自己生成的authorized_keys追加到master的authorized_keys再发放给其他slave即可。
用sshroot@slave1 即可测试是否成功

安装jdk

下载jdk1.8版本。安装并配置好环境变量,我把它解压到了/usr/local/java下面

vi /etc/profile

如下配置

#JAVA
JAVA_HOME=/usr/local/java/jdk1.8.0_152
JRE_HOME=/usr/local/java/jdk1.8.0_152/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH

然后在控制台输入

source /etc/profile入 javac

进行测试是否成功

安装hadoop3.0

wget下载hadoop

wget http://archive.apache.org/dist/hadoop/core/hadoop-3.0.0/hadoop-3.0.0.tar.gz

最小化安装的centos7可能没有wget可以通过

yum -y install wget

进行安装再下载hadoop。

tar -zxvf 安装包 -C 解压到的目录

我解压到了/usr/local/hadoop 下 根目录为 /usr/local/hadoop/hadoop-3.0.0
配置环境变量

vi /etc/profile
#HADOOP

HADOOP_HOME=/usr/local/hadoop/hadoop-3.0.0
PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_HOME
export PATH
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_ROOT_LOGGER=INFO,console
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"

同样 需要命令刷新环境变量

source /etc/profile

在控制台输入hadoop查看是否配置好

配置Hadoop3.0

创建目录

在/usr/local/hadoop中
mkdir data
mkdir data/tmp
mkdir data/var
mkdir data/logs
mkdir data/dfs
mkdir data/dfs/data
mkdir data/dfs/name
mkdir data/dfs/checkpoint

补全配置文件

配置文件全在hadoop-3.0.0/etc/hadoop里
hadoop-env.sh
添加

export JAVA_HOME=/usr/local/java/jdk1.8.0_152

workers
删除localhost

加入slave虚拟机的名称一行一个
例如我的是

slave1
slave2

接下来在各个文件的

<configuration>
</configuration>

中添加
core-site.xml

<property>
  <name>fs.checkpoint.period</name>
  <value>3600</value>
</property>
<property>
  <name>fs.checkpoint.size</name>
  <value>67108864</value>
</property>
<property>
  <name>fs.defaultFS</name>
  <value>hdfs://master:9000</value>
</property>
<property>
  <name>hadoop.tmp.dir</name>
  <value>file:/usr/local/hadoop/data/tmp</value>
</property>

hdfs-site.xml

<property>
  <name>dfs.replication</name>
  <value>2</value>
</property>

<property>
  <name>dfs.namenode.name.dir</name>
  <value>file:/usr/local/hadoop/data/dfs/name</value>
</property>

<property>
  <name>dfs.datanode.data.dir</name>
  <value>file:/usr/local/hadoop/data/dfs/data</value>
</property>

<property>
  <name>dfs.namenode.secondary.http-address</name>
  <value>master:50090</value>
</property>

<property>
  <name>dfs.namenode.http-address</name>
  <value>master:50070</value>
  <description>
    The address and the base port where the dfs namenode web ui will listen on.
    If the port is 0 then the server will start on a free port.
  </description>
</property> 

<property>
  <name>dfs.namenode.checkpoint.dir</name>
  <value>file:/usr/local/hadoop/data/dfs/checkpoint</value>
</property>

<property>
  <name>dfs.namenode.checkpoint.edits.dir</name>
  <value>file:/usr/local/hadoop/data/dfs/edits</value>
</property>

mapred-site.xml

<property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
</property>
<property>
  <name>mapred.job.tarcker</name>
  <value>master:10020</value>
</property>
<property>
  <name>mapreduce.jobhistory.webapp.address</name>
  <value>master:19888</value>
</property>

yarn-site.xml

<property>
  <name>yarn.resourcemanager.hostname</name>
  <value>master</value>
</property>

<property>
  <name>yarn.nodemanager.aux-services</name>
  <value>mapreduce_shuffle</value>
</property>
<property>
  <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
  <value>org.apache.hadoop.mapred.ShuffleHandle</value>
</property>
<property>
  <name>yarn.resourcemanager.resource-tarcker.address</name>
  <value>master:8025</value>
</property>
<property>
  <name>yarn.resourcemanager.scheduler.address</name>
  <value>master:8030</value>
</property>
<property>
  <name>yarn.resourcemanager.address</name>
  <value>master:8040</value>
</property>
<property>
  <name>yarn.resourcemanager.admin.address</name>
  <value>master:8033</value>
</property>
<property>
  <name>yarn.resourcemanager.webapp.address</name>
  <value>master:8088</value>
</property>

同步

利用scp命令将

/usr/local/java/jdk-1.8.0_152、

/usr/local/hadoop、

/etc/profile、

/etc/hosts

复制到各个slave虚拟机上的相应位置
scp 要复制的文件位置 root@要复制的到的虚拟机名称:要复制到的位置
例如

scp /usr/local/java/jdk-1.8.0_152 root@slave1:/usr/local/java/jdk-1.8.2_15

分别运行命令刷新环境变量

source /etc/profile

运行
在master上运行:

hdfs namenode –format

不报错并在倒数五六行左右有一句 successfully。。。。即成功

start-all.sh

运行完后输入jps可看到master下的节点
master运行的节点
slave下的节点
slave运行的节点
成功

其他报错

ERROR: Attempting to launch hdfs namenode asroot
ERROR: but there is no HDFS_NAMENODE_USER defined. Abortinglaunch.

我暂时只遇到过这一个 解决方案引自该同学的文章
Hadoop单点安装FAQ

附录

官方文档 Hadoop Cluster Setup

感谢

感谢QQ上两个帮我的前辈,一个耐心帮我看了配置文件,另一个提醒我去看官方的文档。还都提醒了我3.0版本现在太新,企业的话,还是2.7比较好,这两天我再去尝试2.7版本的配置方案。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值