首页 > 大数据 > Hadoop > 好程序员大数据培训分享Hadoop分布式集群
好程序员大数据培训分享 Hadoop 分布式集群 的详细介绍,首先Hadoop 的搭建有三种方式,单机版适合开发调试 ; 伪分布式版,适合模拟集群学习 ; 完全分布式,生产使用的模式。这篇文件介绍如何搭建完全分布式的 hadoop 集群,一个主节点,三个数据节点为例来讲解。
基础环境
环境准备
1 、软件版本
四台服务器配置,系统:centos6.5 、内存: 1G (视自己配置而定)、硬盘: 20G (视自己配置而定)
四台服务器分配的IP 地址:
192.168.10.131
192.168.10.132
192.168.10.133
192.168.10.134
规划:131 用作主节点用作 master ,其它三台为数据节点 132 、 133 、 134 用作 salve1~3
jdk 和生成保持一致使用 1.8 版本
hadoop 使用 2.7.3 版本
2 、 host 配置和主机名 ( 四台 )
修改四台服务器的hosts 文件
vim /etc/hosts
192.168.10.131 master
192.168.10.132 slave1
192.168.10.133 slave2
192.168.10.134 slave3
分别斯塔服务器的主机名:HOSTNAME , master 为例说明
vi /etc/sysconfig/network
HOSTNAME=master
执行reboot 后生效,完成之后依次修改其它 salve 服务器为: slave1~3 。
3 、服务器安装 jdk( 四台 )
建议使用yum 安装 jdk, 也可以自行下载安装
yum -y install java-1.8.0-openjdk*
配置环境变量,修改配置文件vim/etc/profile
export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk.x86_64
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
使用souce 命令让立刻生效
source /etc/profile
免密登陆
一、首先关闭四台服务器的防火墙和SELINUX
查看防火墙状态
service iptables status
关闭防火墙
service iptables stop
chkconfig iptables off
关闭SELINUX 后,需要重启服务器
—关闭 SELINUX
# vim /etc/selinux/config
—注释掉
#SELINUX=enforcing
#SELINUXTYPE=targeted
—添加
SELINUX=disabled
二、免密码登录本机
下面以配置master 本机无密码登录为例进行讲解,用户需参照下面步骤完成 salve1~3 三台子节点机器的本机无密码登录 ;
1) 生产秘钥
ssh-keygen -t rsa
2) 将公钥追加到” authorized_keys ”文件
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
3) 赋予权限
chmod 600 .ssh/authorized_keys
4) 验证本机能无密码访问
ssh master
最后,依次配置salve1~3 无密码访问
二、master 本机无密码登录 slave1 、 slave2 、 slave3 ,以 master 无密码登录 slave1 为例进行讲解:
1) 登录 slave1 ,复制 master 服务器的公钥” id_rsa.pub ”到 slave1 服务器的” root ”目录下。
scp root@master:/root/.ssh/id_rsa.pub /root/
2) 将 master 的公钥 (id_rsa.pub) 追加到 slave1 的 authorized_keys 中
cat id_rsa.pub >> .ssh/authorized_keys
rm -rf id_rsa.pub
3) 在 master 上面测试
ssh slave1
三、配置slave1~slave3 本机无密码登录 master
下面以slave1 无密码登录 master 为例进行讲解,用户需参照下面步骤完成 slave2~slave3 无密码登录 master 。
1) 登录 master ,复制 slave1 服务器的公钥” id_rsa.pub ”到 master 服务器的” /root/ ”目录下。
scp root@slave1:/root/.ssh/id_rsa.pub /root/
2) 将 slave1 的公钥 (id_rsa.pub) 追加到 master 的 authorized_keys 中。
cat id_rsa.pub >> .ssh/authorized_keys
rm -rf id_rsa.pub // 删除 id_rsa.pub
3) 在 slave1 上面测试
ssh master
依次配置slave2 、 slave3
到此主从的无密登录已经完成了。
Hadoop 环境搭建
配置master 的 hadoop 环境
1 、 master 上解压缩安装包及创建基本目录
# 下载
wget http://apache.claz.org/hadoop/common/hadoop-2.7.3/hadoop-2.7.
# 解压
tar -xzvf hadoop-2.7.3.tar.gz -C /usr/local
# 重命名
mv hadoop-2.7.3 hadoop
2 、配置 master 的 hadoop 环境变量
1) 配置环境变量,修改配置文件 vi/etc/profile
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
使得hadoop 命令在当前终端立即生效
source /etc/profile
下面配置,文件都在:/usr/local/hadoop/etc/hadoop 路径下
2 、配置 core-site.xml
修改Hadoop 核心配置文件 /usr/local/hadoop/etc/hadoop/core-site.xml ,通过 fs.default.name 指定 NameNode 的 IP 地址和端口号,通过 hadoop.tmp.dir 指定 hadoop 数据存储的临时文件夹。
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
</configuration>
特别注意:如没有配置hadoop.tmp.dir 参数,此时系统默认的临时目录为: /tmp/hadoo-hadoop 。而这个目录在每次重启后都会被删除,必须重新执行 format 才行,否则会出错。
3 、配置 hdfs-site.xml :
修改HDFS 核心配置文件 /usr/local/hadoop/etc/hadoop/hdfs-site.xml ,通过 dfs.replication 指定 HDFS 的备份因子为 3 ,通过 dfs.name.dir 指定 namenode 节点的文件存储目录,通过 dfs.data.dir 指定 datanode 节点的文件存储目录。
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/usr/local/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/usr/local/hadoop/hdfs/data</value>
</property>
</configuration>
4 、配置 mapred-site.xml
拷贝mapred-site.xml.template 为 mapred-site.xml ,在进行修改
cp /usr/local/hadoop/etc/hadoop/mapred-site.xml.template /usr/local/hadoop/etc/hadoop/mapred-site.xml
vim /usr/local/hadoop/etc/hadoop/mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>http://master:9000</value>
</property>
</configuration>
5 、配置 yarn-site.xml
<configuration>
<! – Site specific YARN configuration properties – >
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
</configuration>
6 、配置 masters 文件
修改/usr/local/hadoop/etc/hadoop/masters 文件,该文件指定 namenode 节点所在的服务器机器。删除 localhost ,添加 namenode 节点的主机名 master; 不建议使用 IP 地址,因为 IP 地址可能会变化,但是主机名一般不会变化。
vi /usr/local/hadoop/etc/hadoop/masters
## 内容
master
7 、配置 slaves 文件 (Master 主机特有 )
修改/usr/local/hadoop/etc/hadoop/slaves 文件,该文件指定哪些服务器节点是 datanode 节点。删除 locahost ,添加所有 datanode 节点的主机名,如下所示。
vi /usr/local/hadoop/etc/hadoop/slaves
## 内容
slave1
slave2
slave3
配置hadoop-slave 的 hadoop 环境
下面以配置slave1 的 hadoop 为例进行演示,用户需参照以下步骤完成其他 slave2~3 服务器的配置。
1) 复制 hadoop 到 slave1 节点
scp -r /usr/local/hadoop slave1:/usr/local/
登录slave1 服务器,删除 slaves 内容
rm -rf /usr/local/hadoop/etc/hadoop/slaves
2) 配置环境变量
vi /etc/profile
## 内容
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
使得hadoop 命令在当前终端立即生效 ;
source /etc/profile
依次配置其它slave 服务
启动集群
1 、格式化 HDFS 文件系统
进入master 的 ~/hadoop 目录,执行以下操作
bin/hadoop namenode -format
格式化namenode ,第一次启动服务前执行的操作,以后不需要执行。
2 、然后启动 hadoop :
sbin/start-all.sh
3 、使用 jps 命令查看运行情况
#master 执行 jps 查看运行情况
25928 SecondaryNameNode
25742 NameNode
26387 Jps
26078 ResourceManager
#slave 执行 jps 查看运行情况
24002 NodeManager
23899 DataNode
24179 Jps
4 、命令查看 Hadoop 集群的状态
通过简单的jps 命令虽然可以查看 HDFS 文件管理系统、 MapReduce 服务是否启动成功,但是无法查看到 Hadoop 整个集群的运行状态。我们可以通过 hadoopdfsadmin-report 进行查看。用该命令可以快速定位出哪些节点挂掉了, HDFS 的容量以及使用了多少,以及每个节点的硬盘使用情况。
hadoop dfsadmin -report
输出结果:
Configured Capacity: 50108030976 (46.67 GB)
Present Capacity: 41877471232 (39.00 GB)
DFS Remaining: 41877385216 (39.00 GB)
DFS Used: 86016 (84 KB)
DFS Used%: 0.00%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
Missing blocks (with replication factor 1): 0
……
5 、 hadoop 重启
sbin/stop-all.sh
sbin/start-all.sh
错误
在搭建完成启动的时候,发生过两个错误:
1 、 xxx:Error:JAVA_HOMEisnotsetandcouldnotbefound
这个错误意思没有找到jdk 的环境变量,需要在 hadoop-env.sh 配置。
vi /usr/local/hadoop/etc/hadoop/hadoop-env.sh
## 配置项
export JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk.x86_64
2 、 Theauthenticityofhost ‘ 0.0.0.0(0.0.0.0) ’ can ’ tbeestablished.
解决方案关闭SELINUX
— 关闭 SELINUX
# vim /etc/selinux/config
— 注释掉
#SELINUX=enforcing
#SELINUXTYPE=targeted
— 添加
SELINUX=disabled
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69913864/viewspace-2727470/ ,如需转载,请注明出处,否则将追究法律责任。