VMware+CentOS6.5+hadoop2.7搭建hadoop分布式集群

创建虚拟机 & 安装CentOS6.5系统

CentOS6.5 minimal版镜像下载地址
参考在虚拟机上安装CentOS6.5(minimal)

配置网络

配置网卡

[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0

1
2
3
4
5
6
7
8
9
DEVICE=eth0#网卡设备名称
ONBOOT=yes#启动时是否激活 yes | no
BOOTPROTO=static#协议类型 dhcp bootp none
IPADDR=192.168.1.90#网络IP地址
NETMASK=255.255.255.0#网络子网地址
GATEWAY=192.168.1.1#网关地址
BROADCAST=192.168.1.255#广播地址
HWADDR=00:0C:29:FE:1A:09#网卡MAC地址
TYPE=Ethernet#网卡类型为以太网

设置网关(网关要和主机一致)

使用命令:vi /etc/sysconfig/network

1
2
3
NETWORKING=yes  #表示系统是否使用网络
HOSTNAME=  #设置本机的主机名
GATEWAY=192.168.1.1  #设置本机连接的网关的IP地址,这个是最主要的

设置DNS,否则无法解析域名

使用命令:vi /etc/resolv.conf

1
2
nameserver 8.8.8.8 #google域名服务器
nameserver 8.8.4.4 #google域名服务器

测试网络配置是否有效

这里可以用xshell,或者SecureCRT软件来操作虚拟机(但要先重启网络服务和网卡,否则ip地址不生效,不能连接),要方便很多
service network restart 先重启网络服务和网卡
ifconfig 可以查看网络设置
ip addr 查看IP地址
ping 192.168.1.1 检查网关是否通
ping www.baidu.com 检查域名解析是否正常

配置ssh

(三个都执行)

安装ssh服务

yum -y install openssh-server
yum -y install openssh-clients

关闭防火墙

service iptables stop

配置 /etc/hosts 文件添加以下内容

1
2
3
192.168.37.101    master
192.168.37.102    slave1
192.168.37.103    slave2

分别执行 ssh-keygen 生成公钥和私钥
分别执行 ssh-copy-id master /root/.ssh/id_rsa.pub 把公钥发送给 master

(master执行)

cat /root/.ssh/authorized_keys 检查是否收集到了所有的公钥
把 authorized_keys 发送给 slave1 和 slave2
scp /root/.ssh/authorized_keys root@slave1:/root/.ssh/
scp /root/.ssh/authorized_keys root@slave2:/root/.ssh/

(三个都执行)

分别执行,共 9 次
ssh master exit
ssh slave1 exit
ssh slave2 exit
消除第一次登录的 yes

配置环境

Java环境安装

(master执行)

上传 jdk 到 master 的 /opt/SoftWare 文件夹
解压 jdk tar -xvf jdk,,,
配置 jdk 环境变量 vi /etc/profile
在文件最后追加一下内容:

1
2
3
4
5
6
export JAVA_HOME=/opt/SoftWare/jdk1.8.0_151
export JRE_HOME=/opt/SoftWare/jdk1.8.0_151/jre
export CLASSPATH=.:$JRE_HOME/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export HADOOP_HOME=/opt/SoftWare/hadoop-2.7.3
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

刷新环境变量 source /etc/profile
验证是否配置成功 java -version

Hadoop环境安装与配置

(master执行)

下载 hadoop
上传 hadoop 到 /opt/SoftWare 并解压
进入解压后的 hadoop 文件夹创建tmp,logs,hdfs,hdfs/name,hdfs/data 五个文件夹
使用 nodepad++ 进行配置文件的修改,都在 hadoop-2.7.3/etc/hadoop
1.hadoop-env.sh修改第 25 行的 ${JAVA_HOME} 为自己的 jdk 安装目录 /opt/SoftWare/jdk1.8.0_151
2.yarn-env.sh修改第 23 行,解注释 export JAVA_HOME=/home/y/libexec/jdk1.6.0/,修改路径为自己的 jdk 安装目录/opt/SoftWare/jdk1.8.0_151
3.salves修改 localhostslave1slave2
4.mv mapred-site.xml.template mapred-site.xml 重命名 mapred-site.xml.template

修改配置文件

1.etc/hadoop/core-site.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  <property>
    <name>fs.defaultFS</name>
    <!--定义HadoopMaster的URI和端口-->
    <value>hdfs://master:9000</value>
  </property>
  <property>
    <name>hadoop.tmp.dir</name>
    <!--hadoop 中的临时存储目录,tmp 文件夹的路径 -->
    <value>file:/opt/SoftWare/hadoop-2.7.3/tmp</value>
  </property>
  <property>
    <name>io.file.buffer.size</name>
    <!--用作序列化文件处理时读写buffer的大小-->
    <value>131702</value>
  </property>

2.etc/hadoop/hdfs-site.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 <property>
    <!-- namenode 节点数据存储目录 -->
    <name>dfs.namenode.name.dir</name>
    <value>file:/opt/SoftWare/hadoop-2.7.3/hdfs/name</value>
  </property>
  <property>
    <name>dfs.datanode.data.dir</name>
    <!-- datanode 数据存储目录 -->
    <value>file:/opt/SoftWare/hadoop-2.7.3/hdfs/data</value>
  </property>
  <property>
    <!-- 指定DataNode存储block的副本数量,不大于DataNode的个数就行 -->
    <name>dfs.replication</name>
    <value>2</value>
  </property>
  <property>
    <!-- 指定master的http地址 -->
    <name>dfs.namenode.secondary.http-address</name>
    <value>master:50090</value>
  </property>
  <property>
    <!-- 指定master的https地址 -->
    <name>dfs.namenode.secondary.https-address</name>
    <value>master:50091</value>
  </property>
  <property>
    <!-- 必须设置为true,否则就不能通过web访问hdfs上的文件信息 -->
    <name>dfs.webhdfs.enabled</name>
    <value>true</value>
  </property>

3.etc/hadoop/yarn-site.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
  <property>
    <!--NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序-->
    <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>
    <!--ResourceManager 对客户端暴露的地址。客户端通过该地址向RM提交应用程序,杀死应用程序等。-->
    <name>yarn.resourcemanager.address</name>
    <value>master:8032</value>
  </property>
  <property>
    <!--ResourceManager 对ApplicationMaster暴露的访问地址。ApplicationMaster通过该地址向RM申请资源、释放资源等。-->
    <name>yarn.resourcemanager.scheduler.address</name>
    <value>master:8030</value>
  </property>
  <property>
    <!--ResourceManager 对NodeManager暴露的地址.。NodeManager通过该地址向RM汇报心跳,领取任务等。-->
    <name>yarn.resourcemanager.resource-tracker.address</name>
    <value>master:8031</value>
  </property>
  <property>
    <!--ResourceManager 对管理员暴露的访问地址。管理员通过该地址向RM发送管理命令等。-->
    <name>yarn.resourcemanager.admin.address</name>
    <value>master:8033</value>
  </property>
  <property>
    <!--用户可通过该地址在浏览器中查看集群各类信息。-->
    <name>yarn.resourcemanager.webapp.address</name>
    <value>master:8088</value>
  </property>
  <property>
    <!--NodeManager总的可用物理内存。注意,该参数是不可修改的,一旦设置,整个运行过程中不 可动态修改。另外,该参数的默认值是8192MB,因此,这个值通过一 定要配置。不过,Apache已经正在尝试将该参数做成可动态修改的。-->
    <name>yarn.nodemanager.resource.memory-mb</name>
    <value>2048</value>
  </property>

4.etc/hadoop/mapred-site.xml

1
2
3
4
5
6
7
8
9
10
11
12
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
  <property>
    <name>mapreduce.jobhistory.address</name>
    <value>master:10020</value>
  </property>
  <property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>master:19888</value>
  </property>

拷贝 & 启动

把 SoftWare 文件夹拷贝到 slave1 和 slave2 的 opt 下
scp -r /opt/SoftWare/ root@slave1:/opt/
scp -r /opt/SoftWare/ root@slave2:/opt/

把 /etc/profile 文件拷贝到 slave1 和 slave2 的 /etc 下
scp /etc/profile/ root@slave1:/etc/
scp /etc/profile/ root@slave2:/etc/

(三个都执行)

分别去 slave1 和 slave2 刷新环境变量,验证 java 是否配置成功

锁定时间同步
安装时间同步软件 ntpdate:yum -y install ntp ntpdate
和网络时间进行同步:ntpdate cn.pool.ntp.org
把时间写入硬件进行锁定:hwclock --systohc

(master执行)

进入 hadoop-2.7.3/bin 目录

使用 ./hdfs namenode -format 进行格式化
出现 /hdfs/name has been successfully formatted 表示成功
不允许多次格式化,会导致集群无法启动
如果出错:

  1. 修改配置文件
  2. 删除 三个 上的 hdfs/name 和 hdfs/data 文件夹
  3. 把修改的内容发送到 slave1 和 salve2 下,时刻保持 3 个虚拟机的配置文件是一致的
  4. 重新格式化

进入 hadoop-2.7.3/sbin 目录,使用 ./start-dfs.sh 启动 hdfs 服务

(三个都执行)

分别执行 jps 命令
master:
NameNode,
SecondaryNameNode
slave1 和 slave2:
DataNode

访问:http://192.168.5.130:50070 Live Nodes

(master执行)

进入 hadoop-2.7.3/sbin 目录,使用 ./start-yarn.sh 启动 yarn 服务

(三个都执行)

分别执行 jps 命令
master:
ResourceManager
slave1 和 slave2:
NodeManager
访问:http://192.168.5.130:8088

(master执行)

进入 hadoop-2.7.3/sbin 目录,使用 ./stop-dfs.sh 关闭 hdfs 服务
进入 hadoop-2.7.3/sbin 目录,使用 ./stop-yarn.sh 关闭 yarn 服务

切记:关虚拟机前先关闭 hadoop 集群,不然可能会导致集群的崩溃

安装eclipse及hadoop插件

博客链接

实现Wordcount实例

博客链接

×

纯属好玩

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. 创建虚拟机 & 安装CentOS6.5系统
  2. 2. 配置网络
    1. 2.1. 配置网卡
    2. 2.2. 设置网关(网关要和主机一致)
    3. 2.3. 设置DNS,否则无法解析域名
    4. 2.4. 测试网络配置是否有效
    5. 2.5. 配置ssh
      1. 2.5.1. (三个都执行)
      2. 2.5.2. (master执行)
      3. 2.5.3. (三个都执行)
  3. 3. 配置环境
    1. 3.1. Java环境安装
      1. 3.1.1. (master执行)
    2. 3.2. Hadoop环境安装与配置
      1. 3.2.1. (master执行)
    3. 3.3. 拷贝 & 启动
      1. 3.3.1. (三个都执行)
      2. 3.3.2. (master执行)
      3. 3.3.3. (三个都执行)
      4. 3.3.4. (master执行)
      5. 3.3.5. (三个都执行)
      6. 3.3.6. (master执行)
  4. 4. 安装eclipse及hadoop插件
  5. 5. 实现Wordcount实例