Hadoop集群的搭建

Hadoop集群的搭建

HDFS

分布式文件系统

1. 环境准备

1.1 主机的准备
安装3台CentOS7系统的主机
1.2 静态IP和主机名
  • ip 设置
# 查看ip地址
ifconfig
ip addr (老家伙)
# 修改ip地址(,重启网路)
# 修改网卡的配置文件
vim /etc/sysconfig/network-script/ifcfg-ens33 #ens33是网卡名称

在这里插入图片描述

# 修改之后重启网络使其生效
systemctl restart network
# 检查ip
ifconfig
  • 设置主机名
# 修改主机名(立即永久生效)
hostnamectl set-hostname 主机名
# 如果使用ssh客户端软件登陆,需要重新连接来刷新显示
  • 设置IP和主机名的映射关系
    将来集群之间的互相访问都通过主机名来访问
    好处:1.方便记忆 2.通用性好
# 修改/etc/hosts
ip 主机名
192.168.222.161 bd0201
192.168.222.162 bd0202
192.168.222.163 bd0203
  • 修改方式
    将来配置文件可能在集群中的很多机器中都需要修改
    如果逐个修改,容易被打
# 使用vi/vim
飘号(反引号): `
    将反引号引起来的字符串
    当作一个shell命令来执行
    将命令的返回值作为反引号表达式的返回值
单引号:  '
    对所有特殊字符进行脱义
双引号:  "
    将空格脱义
# 写成命令,在所有机器统一执行
echo -e "192.168.222.161 bd0201\n192.168.222.162 bd0202\n192.168.222.163 bd0201" >> /etc/hosts
# 不小心填错了 sed的文件内容替换
sed -i s/"192.168.222.163 bd0201"/"192.168.222.163 bd0203"/g /etc/hosts

# 通过编写自动化脚本完成配置
# 功能: 传入两个参数,1 源文件 2目标目录
#      自动将文件复制到集群的所有机器
#!/bin/bash
HOSTS='bd0201 bd0202 bd0203'
for HOST in ${HOSTS}
do
  echo "++正在复制$1到$HOST的$2中..."
  scp -rq ${1} ${HOST}:${2}
  echo "--发送完成!"
done
1.3 配置SSH免密登录

因为分布式程序集群之间需要进行频繁的RPC操作
所以每次连接 都需要输入密码的话 1.麻烦 2.浪费计算资源

所以需要在集群之间配置免密登陆

  1. 把老的锁和钥匙都扔了
rm -rf /root/.ssh
  1. 配钥匙
    集群中的所有机器都执行
ssh-keygen -t rsa

回车 回车 回车 …
3. 发钥匙
每台机器都要执行

# 将钥匙复制给bd0201
ssh-copy-id bd0201
# 将钥匙复制给bd0202
ssh-copy-id bd0202
# 将钥匙复制给bd0203
ssh-copy-id bd0204
1.4 安装JDK
  1. 上传安装包
  2. 解压,修改名字
  3. 配置环境变量
    操作系统中(window linux)PATH是一个特殊的变量
    当我们执行一个命令时,操作系统会在PATH中寻找,如果能找到就会调用找到的第一个文件并执行
# /etc/profile添加如下内容
export JAVA_HOME=/opt/jdk1.8
export PATH=.:$JAVA_HOME/bin:$PATH
# 刷新/etc/profile
source /etc/profile

2. 完全分布式安装Hadoop(HDFS)

  1. 上传,解压,改名(这里就不细说具体操作了)
  2. 修改配置文件
    一般的:分布式程序安装时需要修改两类配置文件
  • env文件
    通常是个.sh结尾的脚本
    在里面配置一些其他依赖组件的环境变量
  • site文件(配置参数)
    通常是ymal、xml或者properties类型的文件
  • hadoop中的配置文件
组件环境配置参数配置
HDFShadoop-env.shcore-site.xml, hdfs-site.xml
MapReducemapred-env.shmapred-site.xml
Yarnyarn-env.shyarn-site.xml
集群从节点salvessalves
  • hadoop-env.sh
export JAVA_HOME=/opt/jdk1.8
  • core-site.xml
<property>
   <!-- 配置默认的文件系统(配置NameNode服务启动的主机和端口) -->
   <name>fs.defaultFS</name>
   <value>hdfs://bd0201:9000/</value>
</property>
<property>
   <!-- 配置hdfs文件保存的目录,当前选择放在Hadoop的安装目录下 -->
   <name>hadoop.tmp.dir</name>
   <value>/opt/hadoop-2.7.7/data</value>
</property>
  • hdfs-site.xml
<property>
  <!-- 配置固定的节点启动SecondaryNamenode -->
  <name>dfs.namenode.secondary.http-address</name>
  <value>bd0202:50090</value>
</property>
  • slaves
# 将来需要启动从节点(对于HDFS来说就是DataNode)的主机名
bd0201
bd0202
bd0203
  • 分发配置文件
    将配置好的这一台的文件复制给另外的两台
  1. 配置环境变量
export HADOOP_HOME=/opt/hadoop-2.7.7
export PATH=.:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
source /etc/profile
  1. 格式化
hdfs namenode -format
# hadoop也可以用来执行hdfs的一些操作

注意:此命令只在namenode机器上执行
5.启动

# hadoop全部组件的启动和关闭
start-all.sh
start-stop.sh
# 单独启动和关闭hdfs的全部组件
start-dfs.sh
stop-dfs.sh
# 单服务(进程)的启动和关闭
# 命令            启动|关闭   服务名
hadoop-daemon.sh start|stop  namenode|datanode|secondarynamenode

3. HDFS的使用

  • 一些基本命令
# 1.上传文件(拷贝操作)
hdfs dfs -put 本地路径 hdfs路经
# 2.下载文件(拷贝操作)
hdfs dfs -get hdfs路经 本地路径
# 3.单独设置副本数
hdfs dfs -setrep 副本数 hdfs路径
# hdfs默认的副本数是3
# 根据我们的需要可以随时动态调整副本数
# 本质就是块的副本复制和删除的操作
# 4.分布式复制,一般用于HDFS集群之间进行数据传输
hdfs dfs -dscp hdfs集群1的路径 hdfs集群2的路径
# dscp会启动一个MapReduce程序,为每一个block单独启动一个线程,进行数据的读写操作
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值