hadoop入门之完全分布式部署

需求

前几天某机构老师向我推销大数据课程,看了他们的教学大纲第一阶段就是学“Java SE核心知识”,作为运维觉着现在再学Java有点力不从心啊;而这位老师也表示“没有Java基础,没法学大数据”。于是乎就产生了这样一个想法:对于我们这种没有Java基础的运维人,是否可以在大数据走出一条属于自己路?

那就从此文开始学习起来吧。

集群准备

1.设置hosts及jdk

#所有节点配置
#配置hosts
10.10.10.56 hadoop1
10.10.10.57 hadoop2
10.10.10.58 hadoop3

#jdk
JAVA_HOME=/usr/local/jdk-1.8
export PATH=$JAVA_HOME/bin:$PATH

2.设置ssh免登录

# NameNode 56上需要往其他节点分发文件
ssh-keygen
ssh-copy-id hadoop1
ssh-copy-id hadoop2
ssh-copy-id hadoop3

# ResourceManager 57上需要控制其他节点的NodeManager
ssh-keygen
ssh-copy-id hadoop1
ssh-copy-id hadoop2
ssh-copy-id hadoop3

3.文件同步

用于将NameNode上更新的文件更新至远程DataNode节点上

#!/bin/bash
#1 获取参数个数,如果没有参数,直接退出
pcount=$#
if (($pcount==0)); then
echo no args
exit
fi

#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname

#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir

#4 获取当前用户名称
user=`whoami`

#5 循环
for ((host=2; host<4; host++));do
echo "====hadoop$host===="
rsync -rvl -e 'ssh -p 1022' $pdir/$fname $user@hadoop$host:$pdir
done

#加到PATH
export PATH=/root/bin:$PATH

#更新方式
xrsync xxxx

4.安装hadoop

tar -zxvf hadoop-2.7.2.tar.gz -C /usr/local
mkdir /App/hadoop
#环境变量vim /etc/profile
export HADOOP_HOME=/usr/local/hadoop-2.7.2
#日志输出目录,默认为$HADOOP_HOME/logs
export HADOOP_LOG_DIR=/App/hadoop/logs
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

source /etc/profile

集群配置

1.节点规划

角色 10.10.10.56 10.10.10.57 10.10.10.58
hdfs NameNode、DataNode DataNode SecondaryNameNode、DataNode
yarn NodeManager ResourceManager NodeManager

其中:NameNode 和 SecondaryNameNode 占用内存1:1,尽量避免同时放在同一节点下。

2.核心配置文件

# 配置core-site.xml
# vim core-site.xml
<configuration>
  <!--指定HDFS中NameNode的地址-->
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://hadoop1:9000</value>
  </property>
  <!--指定Hadoop运行时产生文件的存储目录-->
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/App/hadoop/data/tmp</value>
  </property>
</configuration>

3.hdfs配置文件

# 1.配置jdk
# vim hadoop-env.sh
export JAVA_HOME=/usr/local/jdk-1.8

# 2.配置hdfs-site.xml
# vim hdfs-site.xml
<configuration>
  <!--修改block副本数,默认为3-->
  <property>
    <name>dfs.replication</name>
    <value>3</value>
  </property>

  <!--指定Hadoop辅助名称节点主机-->
  <property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>hadoop3:50090</value>
  </property>
</configuration>

4.yarn配置文件

# 1.配置jdk
# vim yarn-env.sh
export JAVA_HOME=/usr/local/jdk-1.8

# 2.配置yarn-site.xml
# vim yarn-site.xml
<configuration>
  <!--Reduce获取数据的方式-->
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
  <!--指定YARN的ResourceManager的地址-->
  <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>hadoop2</value>
  </property>
</configuration>

5.配置mapred-env.sh

# 配置jdk
# vim mapred-env.sh
export JAVA_HOME=/usr/local/jdk-1.8

# 配置mapred-site.xml
# cp mapred-site.xml.template mapred-site.xml
# vim mapred-site.xml
<configuration>
  <!--指定MR运行在YARN上-->
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
</configuration>

6.文件同步更新

所有配置文件的修改需要在集群中所有主机上进行同步更新。

xrsync etc/hadoop

群起集群

1.配置slaves

# 56节点上
# vim etc/hadoop/slaves
hadoop1
hadoop2
hadoop3
#该文件中添加的内容结尾不允许有空格,文件中不允许有空行。

#更新文件
xrsync slaves

2.启动

#1.格式化dfs 文件系统
hdfs namenode -format

#2.启动NameNode和DataNode
#在NodeName节点56上启动
sbin/start-dfs.sh

#3.测试
#jps查看进程是否启动
jps
#web查看NameNode
http://10.10.10.56:50070

#4.启动yarn
#在ResourceManager节点57上启动yarn,而不是在NameNode节点上
sbin/start-yarn.sh

3.测试

#hds测试
#hdfs 创建测试目录
bin/hdfs dfs -mkdir -p /hadoop/input

#上传小文件
bin/hdfs dfs -put anaconda-ks.cfg /hadoop/input

#上传大文件
bin/hdfs dfs -put hadoop-2.7.2.tar.gz /hadoop/input

#下载文件
bin/hdfs dfs -get /hadoop/input/hadoop-2.7.2.tar.gz ./

总结

Hadoop不仅是分布式基础架构,更代表着一个完整的生态,让我们从零做起,开启我们的大数据运维之路。

猜你喜欢

转载自blog.csdn.net/yanggd1987/article/details/109261324