Hadoop集群的搭建(全分布式)

Hadoop集群系列文章目录

Hadoop集群的搭建(全分布式)

Hadoop集群的搭建(全分布式)——记录一些遇到的错误及其解决方法


前提之前提——软件安装包の准备

安装包

前提

①集群范围为westgis117-westgis128(主机名),对应IP地址为10.103.104.117-10.103.104.128;
②用户名为DKF;(详见Linux基础——啥是用户名?机器名??主机名???)
③ntp已配置;(详见Linux基础——利用crontab实现ntp配置)
④主机名与IP地址的映射已配置;(详见Linux基础——主机名与IP地址の映射)
⑤防火墙已关闭。(详见Linux基础——虚拟机の防火墙)

一、集群规划

集群规划

二、搭建Hadoop集群

在NameNode完成文件的配置,再远程传输至各个DataNode
NameNode:westgis127
DataNode:westgis118~westgis126、westgis128
client node:westgis117

1、安装jdk

##解压安装包
tar -zxvf jdk-8u144-linux-x64.tar.gz  
##更改文件夹权限
chmod 755 jdk1.8.0_144
##配置环境变量
vim ~/.bashrc
##在.bashrc中添加:
#Java 
export JAVA_HOME=/home/DKF/NoSQL/jdk1.8.0_144
export PATH=$JAVA_HOME/bin:$PATH

##保存并退出
:wq

在.bashrc中添加内容如下
.bashrc

##使环境变量生效
source ~/.bashrc
##验证jdk是否安装成功
java -version或$JAVA_HOME

验证jdk如下
验证jdk

2、ssh实现免密登陆

==该文仅写出NameNode到其余各个node以及NameNode自身的免密登陆,建议对每个node都配置到其他node以及自身的免密登陆哈,因为之后有大大的好处(信我得永生 ) ==

**方法一**
##产生秘钥和公钥文件
ssh-keygen
##实现到自己的免密登陆
cp id_rsa.pub authorized.keys
##实现到其他node的免密登陆
scp authorized_keys <依次替换为各个node的主机名>:/home/<username>/.ssh
ssh至各个node
##然后更改文件的权限
chmod 600 authorized_keys

对脚本比较感兴趣或已经掌握脚本的同志可以考虑方法二~

**方法二**
##产生秘钥和公钥文件
ssh-keygen
##使用script
vim ssh.sh
##为脚本文件增加可执行权限
chmod +x ssh.sh
##执行脚本
./ssh.sh

我的脚本内容如下
ssh.sh

3、配置相关文件

①需要配置的文件包括:core-site.xml、hdfs-site.xml、hadoop-env.sh、slaves、mapred-site.xml、yarn-site.xml;
②除配置文件外,还需要手动创建文件夹。

##解压安装包
tar -zxvf hadoop-2.7.6.tar.gz
##进入配置文件所处目录
cd /home/DKF/NoSQL/hadoop-2.7.6/etc/Hadoop
##查看该目录下都有些啥
ls

/home/DKF/NoSQL/hadoop-2.7.6/etc/Hadoop下的文件
目录下的内容

接下来正式开始配置相关文件
①core-site.xml

##编辑命令
vim core-site.xml
##配置内容
<configuration>
  <property>
    <name>hadoop.tmp.dir</name>
    <value>file:/home/DKF/NoSQL/hadoop-2.7.6/tmp</value><!--需要手动创建tmp文件夹-->
    <description>Abase for other temporary directories.</description>
  </property>
	
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://10.103.104.127:9000</value>
  </property>
</configuration>

##保存并退出后(:wq),手动创建tmp文件夹
mkdir tmp

在core-site.xml中添加内容如下
core-site.xml

创建tmp文件夹如下
/home/DKF/NoSQL/hadoop-2.7.6/tmp

②hdfs-site.xml

##编辑命令
vim core-site.xml
##配置内容
<configuration>
  <property>
    <name>dfs.replication</name>
    <value>3</value><!--数据备份数量,默认为3-->
  </property>

  <property>
    <name>dfs.namenode.name.dir</name>
    <value>file:/home/DKF/NoSQL/hadoop-2.7.6/tmp/dfs/name</value><!--需要手动创建dfs文件夹以及name文件夹-->
  </property>

  <property>
    <name>dfs.datanode.data.dir</name>
    <value>file:/home/DKF/NoSQL/hadoop-2.7.6/tmp/dfs/data</value><!--需要手动创建data文件夹-->
  </property>

  <property>
    <name>dfs.blocksize</name><!--block大小,默认为64MB,即67108864B-->
    <value>67108864</value>
  </property>

  <property>
    <name>dfs.namenode.handler.count</name><!--用来处理客户端的远程过程调用及集群守护进程的调用的线程的个数,默认为10-->
    <value>10</value>
  </property>
</configuration>

##保存并退出后(:wq),手动创建tmp文件夹
mkdir -p tmp/dfs/data
mkdir tmp/dfs/name
##当然,也可以仅通过一条命令实现
mkdir -p tmp/dfs/data tmp/dfs/name

在hdfs-site.xml中添加内容如下
hdfs-site.xml
创建name文件夹、data文件夹如下
name、data
find命令,查看目录结构(find命令比较实用,建议永久记忆)
find

③hadoop-env.sh

##获取jdk安装路径(即在~/.bashrc中配置的位置)
$JAVA_HOME
##编辑命令
vim hadoop-env.sh
##配置内容
export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/home/DKF/NoSQL/jdk1.8.0_144
##保存并退出
:wq

首先得获取jdk的安装路径
$JAVA_HOME
然后在hadoop-env.sh中添加配置如下
hadoop-env.sh

④slaves
slaves中存放的是slave node,即DataNode,不应包含client node和NameNode

在slaves中添加内容如下
slaves
由于在slaves中存放的是DataNode的主机名,因此——配置主机名与IP地址的映射是前提!!!

⑤yarn-site.xml

##编辑命令
vim yarn-site.xml
##配置内容
<configuration>
<!-- Site specific YARN configuration properties -->
  <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>10.103.104.127</value>
  </property>

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

  <property>
    <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
    <value>org.apache.hadoop.mapred.ShuffleHandler</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.ShuffleHandler</value>
  </property>

  <property>
    <name>yarn.resourcemanager.admin.address</name>
    <value>10.103.104.127:8033</value>
  </property>

  <property>
    <name>yarn.resourcemanager.address</name>
    <value>10.103.104.127:8032</value>
  </property>

  <property>
    <name>yarn.resourcemanager.resource-tracker.address</name>
    <value>10.103.104.127:8031</value>
  </property>

  <property>
    <name>yarn.resourcemanager.scheduler.address</name>
    <value>10.103.104.127:8030</value>
  </property>
</configuration>

##保存并退出
:wq

在yarn-site.xml中添加内容如下
yarn-site.xml-1yarn-site.xml-2

⑥mapred-site.xml

##编辑命令
vim yarn-site.xml
##配置内容
<configuration>
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
</configuration>

##保存并退出
:wq

首先通过cp命令产生mapred-site.xml文件
cp

然后在mapred-site.xml中添加内容如下
mapred-site.xml

4、配置环境变量

##编辑命令
vim ~/.bashrc
##配置内容
#Hadoop
export HADOOP_HOME=/home/DKF/NoSQL/hadoop-2.7.6
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

##保存并退出
:wq

在.bashrc中添加内容如下
.bashrc

##使环境变量生效
source ~/.bashrc
##验证环境变量是否生效
hadoop version或$HADOOP_HOME

验证环境变量如下
.bashrc

5、将配置好的文件scp至各个DataNode

**方法一**
scp -r ~/NoSQL <依次替换为各个node的主机名>:~
scp ~/.bashrc <依次替换为各个node的主机名>:~
**方法二(使用script)**
vim scp.sh
##为脚本增加可执行权限
chmod +x scp.sh
##执行脚本
./scp.sh

在脚本文件中添加内容如下
(PS:涉及到westgis117的两行是我的失误,client node(westgis117)理论上是不需要接收配置好的文件的)
script

##ssh到每个DataNode上重启环境变量
source ~/.bashrc

PS:据我的经验,其实这一步不是必不可少的,因为把.bashrc通过scp传输过去之后,虚拟机的环境变量会自动生效!!!but以防万一还是检查一下各个DataNode的环境变量是否生效吧~
况且。。。可以写一个脚本实现ssh到每个DataNode上重启环境变量嘛,感兴趣的同志可以尝试自己搞一个脚本哈

6、格式化NameNode

##格式化集群
hdfs namenode -format

格式化结果如下
格式化NameNode-1
格式化NameNode-2

7、启动集群

##启动集群
$HADOOP_HOME/sbin/start-dfs.sh
$HADOOP_HOME/sbin/start-yarn.sh

启动结果如下
HDFS集群
HDFS
Yarn
Yarn

8、查看状态

##查看集群
jps
hadoop dfsadmin -report
##HDFS_web监控界面
http://10.103.104.127:50070/
##Yarn_web监控界面
http://10.103.104.127:8088/

集群状态如下
NameNode
NameNode Status
Node Status
Web监控界面
HDFS
HDFS_web
Yarn
Yarn_web

9、停止集群

惨痛教训:有启有停,养成习惯,不怕麻烦,再启不难!!!

##一定要先停止Yarn,再停止HDFS(先启后停,后启先停)
$HADOOP_HOME/sbin/stop-yarn.sh
$HADOOP_HOME/sbin/stop-dfs.sh
##by the way也可以使用一个比较暴力的命令
$HADOOP_HOME/sbin/stop-all.sh
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值