Hadoop分布式集群搭建

题记:期间遇到了好多问题(不仅仅是为了搭建hadoop集群),自己对linux操作系统还真挺感兴趣的,稍微有些遗漏,总结下。

软件准备

三台服务器:CentOS7 64位、Ubuntu14.04.5 32位、Debian9.2.1 64位 可以到开源镜像网站下载,网易(mirrors.163.com)阿里都可以(mirrors.aliyun.com)

链接供参考,方便大家找到路径(可以选择自己想下的版本)

CentOS:http://mirrors.163.com/centos/7/isos/x86_64/CentOS-7-x86_64-NetInstall-1708.iso

Ubuntu:http://mirrors.163.com/ubuntu-releases/14.04/ubuntu-14.04.5-server-i386.iso

Debian:http://mirrors.163.com/debian-cd/9.2.1/amd64/iso-cd/debian-9.2.1-amd64-xfce-CD-1.iso

服务器分配的ip地址:192.168.11.129/130/132

JDK

Hadoop1.2.1:

搭建步骤:

1、hosts和主机名设置

2、安装jdk

3、配置ssh免密登录关闭SELINUX

4、Hadoop环境搭建

5、启动集群

详细过程:

1、hosts和主机名设置

修改三台服务器的 hosts文件 (末尾添加)
vim /etc/hosts(vi简易教程:“i/a”开始编辑, “esc”退出编辑,“:wq”保存退出,“:q!”不保存退出,x/ctrl+x删除单个,双击d删除整行)

192.168.11.129 hadoop-master
192.168.11.130 hadoop-slave2
192.168.11.132 hadoop-slave3
分别修改三台服务器的主机名,执行reboot重启生效:
CentOS: vi /etc/sysconfig/network
HOSTNAME=hadoop-master

Debian/Ubuntu: vi /etc/hostname

hadoop-slave2/hadoop-slave3

2、安装jdk

可以试用yum/apt-get安装,也可自行下载安装

CentOS不用配置下载源,安装不上可以update下,Debian和Ubuntu更换源地址(mirrors.163.com),

vi /etc/apt/sources.list

示例:找到mirrors下ubuntu包下的dist目录,trusty系统,加目录下的所有包名 详见:网易镜像Ubuntu使用帮助

deb http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse

yum install java-1.8.0-openjdk*
apt-get install openjdk-8-jdk
配置环境变量: vi /etc/profile
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
export CLASSPATH=.:$JAVA_HOME/lib.tools.jar
export PATH=$JAVA_HOME/bin:$PATH
source命令立即生效

source /etc/profile

3、配置ssh免密登录关闭SELINUX

CentOS7之后需默认使用的是firewall作为防火墙,查看防火墙状态:

firewall-cmd --state  #查看防火墙状态
systemctl stop firewalld.service    #停止firewall
systemctl disable firewalld.service     #禁止firewall开机自启动
Ubuntu 默认防火墙是ufw,可以在/etc找下,默认是关闭的

ufw status   #查看防火墙状态
ufw disable  #关闭并禁止开机启动
Debian默认没有开启防火墙。

关闭SELINUX需要重启服务器, (CentOS关闭SELINUX,Ubuntu和Debian跳过该操作)

-- 关闭SELINUX
# vim /etc/selinux/config
-- 注释掉
#SELINUX=enforcing
#SELINUXTYPE=targeted
-- 添加
SELINUX=disabled
(一)下面以配置hadoop-master本机无密码登录为例进行讲解,用户需参照下面步骤完成h-salve2~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 hadoop-master
最后依次配置slave2~3无密码访问

(二)hadoop-master本机无密码登录hadoop-slave2、hadoop-slave3,以hadoop-master无密码登录hadoop-slave2为例进行讲解:

# 1)登录hadoop-slave2 ,复制hadoop-master服务器的公钥”id_rsa.pub”到hadoop-slave1服务器的”root”目录下(可安装lrzsz,或者用SecureFXPortable)
scp root@hadoop-master:/root/.ssh/id_rsa.pub /root/
# 2)将hadoop-master的公钥(id_rsa.pub)追加到hadoop-slave2的authorized_keys中
cat id_rsa.pub >> .ssh/authorized_keys
# 3)在 hadoop-master上面测试
ssh  hadoop-slave2
(三)配置hadoop-slave2~hadoop-slave3本机无密码登录hadoop-master
反向类比hadoop-master无密码登录hadoop-slave2
4、Hadoop环境搭建
下载hadoop安装包解压(建议本地修改好文件之后再上传) hadoop-1.2.1/conf下的六个文件
core-site.xml
hdfs-site.xml
mapred-site.xml
hadoop-env.sh
masters
slaves
修改Hadoop核心配置文件core-site.xml,通过fs.default.name指定NameNode的IP地址和端口号,通过hadoop.tmp.dir指定hadoop数据存储的临时文件夹。
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
	<property>
        <name>hadoop.tmp.dir</name>
        <value>/root/hadoop/tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>
    <property>
        <name>fs.default.name</name>
        <value>hdfs://hadoop-master:49000</value>
    </property>
</configuration>
特别注意:如没有配置hadoop.tmp.dir参数,此时系统默认的临时目录为:/tmp/hadoo-hadoop。而这个目录在每次重启后都会被删除,必须重新执行format才行,否则会出错。


修改HDFS核心配置文件hdfs-site.xml,通过dfs.replication指定HDFS的备份因子为3,通过dfs.name.dir指定namenode节点的文件存储目录,通过dfs.data.dir指定datanode节点的文件存储目录。
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
	<property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <property>
        <name>dfs.name.dir</name>
        <value>/root/hadoop/name</value>
    </property>
    <property>
        <name>dfs.data.dir</name>
        <value>/root/hadoop/data</value>
    </property>
</configuration>
修改mapred-site.xml,设置的是运行jobtracker的服务器主机名和端口,也就是作业将在master主机的9001端口执行

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
	<property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
  </property>
   <property>
      <name>mapred.job.tracker</name>
      <value>http://hadoop-master:9001</value>
  </property>
</configuration>
(一)hadoop-master的hadoop环境配置
将修改好的hadoop1.2.1上传至hadoop-master的 / 路径下,修改hadoop-env.sh文件,添加hadoop-master的jdk安装路径

# The java implementation to use.  Required.
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk   #换成你自己jdk安装路径
修改master,slaves文件
vi /hadoop1.2.1/masters
## 内容
hadoop-master
vi /hadoop1.2.1/slaves
## 内容
hadoop-slave2
hadoop-slave3
配置hadoop环境变量,修改配置文件 vi /etc/profile

export HADOOP_HOME=/hadoop-1.2.1
export PATH=$PATH:$HADOOP_HOME/bin
source  /etc/profile  立即生效
(二)hadoop-slave2~hadoop-slave3 的hadoop环境配置
类似于(一),将hadoop1.2.1上传至hadoop-slave2,hadoop-slave3 / 路径下,修改hadoop-env.sh文件,
修改master文件,删除slaves文件 
配置hadoop环境变量
5、启动集群
进入/etc/hadoop1.2.1文件目录执行以下操作
bin/hadoop namenode -format
格式化namenode,第一次启动服务前执行的操作,以后不需要执行。如果要执行的话,先删除core-site.xml里设置的tmp文件夹
启动hadoop
start-all.sh
使用jps查看运行情况,hadoop-master下:

2065 SecondaryNameNode
2291 Jps
1914 NameNode
2141 JobTracker
hadoop-slave下
803 DataNode
980 Jps
876 TaskTracker
主要参考:

hadoop分布式集群搭建:http://www.ityouknow.com/hadoop/2017/07/24/hadoop-cluster-setup.html

Hadoop分布式集群搭建:http://www.linuxidc.com/Linux/2017-08/146389.html



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值