现在的位置: 首页 > 大数据 > 正文

搭建Hadoop完全分布式笔记

2019年09月30日 大数据 ⁄ 共 4482字 ⁄ 字号 暂无评论
孙国栋广告

本文是将三台电脑用路由器搭建本地局域网,系统为 centos6.5,已经实验验证,搭建成功。

一、设置静态 IP&修改主机名&关闭防火墙( all-root )(对三台电脑都需要进行操作)

0.将三台电脑安装 centos6.5 系统

1.设置静态 ip (便于机器之间的通信,防止路由器电脑重启后, ip 变化,导致不能通信)
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 #描述网卡对应的设备别名,例如 ifcfg-eth0 的文件中它为 eth0
BOOTPROTO=static #设置网卡获得 ip 地址的方式,可能的选项为 static , dhcp 或 bootp ,分别对应静态指定的 ip 地址,通过 dhcp 协议获得的 ip 地址,通过 bootp 协议获得的 ip 地址
BROADCAST=192.168.0.255 #对应的子网广播地址
HWADDR=00:07:E9:05:E8:B4 #对应的网卡物理地址
在文件最后面添加一下代码
IPADDR=192.168.80.100
NETMASK=255.255.255.0
NETWORK=192.168.0.0
里面的 IPADDR 地址设置你想要的,我这里是 192.168.80.100 。
设置好后,需要让 IP 地址生效,运行下面命令:
service network restart Shutting down interface
然后运行 ifconfig 就可以看到静态 ip 是否生效。

2.修改主机名(每台电脑都要修改,建议使用 hadoop100,hadoop101,hadoop102,对应于 ip 地址最后面三位数)
vi /etc/sysconfig/network
hostname=hadoop100
重启一下网络 service network restart
验证 reboot -h now 立刻重启 然后 hostname

3.关闭防火墙
关闭已经启动的防火墙: service iptables stop (只能关闭当前)
验证: service iptables status
Firewall is not running
关闭防火墙开机自动启动功能:
( 1 ). 先查看 查看: chkconfig --list |grep iptables
iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
( 2 ). 关闭 chkconfig iptables off
验证: chkconfig --list |grep iptables

4.建立 hadoop 运行帐号
最好不要使用 root 操作 hadoop,root 是超级管理员权限,不推荐各个机器之间使用 root 访问,
useradd hadoop 增加用户
passwd hadoop 设置密码

二、配置 hosts 文件(只需要对主机 192.168.80.100 ( hadoop100 )进行操作,然后通过 scp 命令将这些配置分发给其他电脑即可)
操作 192.168.80.100 机器
vi /etc/hosts 添加下面内容
192.168.80.100 hadoop100
192.168.80.101 hadoop101
192.168.80.102 hadoop102
验证: ping hadoop100
ping hadoop101
ping hadoop102

三、为 hadoop 账户配置 ssh 免密码连入(只需对 hadoop100 操作)
操作 hadoop100 机器
① ssh-keygen -t rsa 会在~/.ssh/文件夹下生成 id_rsa id_rsa.pub 两个文件
② 根据 ip 分别执行
cp ~/.ssh/id_rsa.pub ~/.ssh/id_rsa.pub.100
cp ~/.ssh/id_rsa.pub ~/.ssh/id_rsa.pub.101
cp ~/.ssh/id_rsa.pub ~/.ssh/id_rsa.pub.102

scp -r ~/.ssh/id_rsa.pub.101 hadoop@hadoop100:/home/hadoop/.ssh
scp -r ~/.ssh/id_rsa.pub.102 hadoop@hadoop100:/home/hadoop/.ssh

④ 把所有机器的公钥,放在 hadoop100 的一个文件中(在 hadoop100 的 hadoop 用户下操作)
cat ~/.ssh/id_rsa.pub.100 >> ~/.ssh/authorized_keys
cat ~/.ssh/id_rsa.pub.101 >> ~/.ssh/authorized_keys
cat ~/.ssh/id_rsa.pub.102 >> ~/.ssh/authorized_keys

验证 ssh hadoop101 发现无效,提示还是需要密码。

⑤ 修改 authorized_keys 的权限, 组用户不能有 写( W )权限, 不然 ssh 由于安全问题不生效
authorized_keys 权限改为 644 就 OK

命令 chmod g-w authorized_keys

然后分发给 101 和 102
scp -r ~/.ssh/authorized_keys hadoop@hadoop101:/home/hadoop/.ssh
scp -r ~/.ssh/authorized_keys hadoop@hadoop102:/home/hadoop/.ssh
验证: ssh hadoop101 ...
然后神奇的事情发生了。 3 台机器彼此之间可以互联。
(给大家分享一套 hadoop 大数据视频,我自己全部都看过,质量非常高。
授课老师是百度 hadoop 核心架构师
内容包括 hadoop 入门、 hadoop 生态架构以及大型 hadoop 商业实战案例。
讲的很细致, MapReduce 就讲了 15 个小时。
学完后可以胜任 hadoop 的开发工作,很多人学的这个课程找到的工作。
包括指导书、练习代码、和用到的软件都打包了
有想学 hadoop 的免费送给你,加我徽信 ganshiyu1026 下载,备注 V2 )

四、下载并解压 jdk (只需对 hadoop100 操作)
使用 root 用户进行操作,把 jdk 解压到 /usr/local/ 文件夹中。
[root@hadoop100 local]# cd /usr/local
[root@hadoop100 local]# ./jdk-6u30-linux-x64.bin 解压 jdk 后,生成 jdk1.6.0_30 文件夹
配置环境变量
[root@hadoop100 local]# vi /etc/profile 在最后面加上下面两行
export JAVA_HOME=/usr/local/jdk1.6.0_30
export PATH=.:$JAVA_HOME/bin:$PATH
保存退出
[root@hadoop100 local]# source /etc/profile 使新修改的环境变量生效。

验证: java -version

五、下载并解压 hadoop 安装包(仅对 hadoop100 操作)

5.1 解压 hadoop 并重命名

使用 root 用户进行以下操作
tar -zxvf /usr/local/hadoop-1.1.2.tar.gz
解压后生成文件夹 hadoop-1.1.2 。
重命名 mv hadoop-1.1.2 hadoop

5.2 修改权限,使得 hadoop 用户可以操作 hadoop 文件夹

chown -R hadoop /usr/local/hadoop/
chgrp -R hadoop /usr/local/hadoop/

5.3 设置 hadoop 环境变量

vi /etc/profile

修改为
export JAVA_HOME=/usr/local/jdk1.6.0_30
export HADOOP_HOME=/usr/local/hadoop

export PATH=.:$HADOOP_HOME/bin:$JAVA_HOME/bin:$PATH
保存退出
source /etc/profile

验证: hadoop

六、设置 hadoop 参数
进入 usr/local/hadoop/conf 文件夹,即可看到以下文件
6.1 配置 hadoop-env.sh

找到 export JAVA_HOME 这一行,去除前面的#号注释符。
修改 export JAVA_HOME=/usr/local/jdk1.6.0_30

6.2 配置 core-site.xml

fs.default.name
hdfs://hadoop100:9000
change your own hostname
hadoop.tmp.dir
/home/hadoop/tmp

6.3 配置 hdfs-site.xml

dfs.replication
2

6.4 配置 mapred-site.xml

mapred.job.tracker
hadoop100:9001
change your own hostname

6.5 配置 masters 文件

将 masters 里的 localhost 改成 hadoop100

6.6 配置 slaves 文件

将 slaves 里的 localhost 改成
hadoop101
hadoop102

七、向其他机器复制 jdk 以及 hadoop 和一些配置

7.1 分发 hosts 到其他机器(root 用户)

scp -r /etc/hosts root@hadoop101:/etc/
scp -r /etc/hosts root@hadoop102:/etc/

7.2 分发 java(root 用户)

scp -r /usr/local/jdk1.6.0_30 root@hadoop101:/usr/local/
scp -r /usr/local/jdk1.6.0_30 root@hadoop102:/usr/local/

7.3 分发环境变量 /etc/profile(root 用户)

scp -r /etc/profile root@hadoop101:/etc/
scp -r /etc/profile root@hadoop102:/etc/

分别通过 ssh 远程登录其他电脑
执行 source /etc/profile
分别验证: java -version
ping hadoop101
ping hadoop100

7.4 分发 hadoop(root 用户)

scp -r /usr/local/hadoop/ root@hadoop101:/usr/local/hadoop/
scp -r /usr/local/hadoop/ root@hadoop102:/usr/local/hadoop/
再通过 ssh 远程登录其他电脑修改 hadoop 权限,如 5.2 所示。
再分别验证: hadoop

八、格式化 hdfs
在 hadoop100 , hadoop101, hadoop102 的 hadoop 用户下
执行命令 hadoop namenode -format

九、启动 hadoop
在 hadoop100 上执行 start-all.sh
用 jps 检验
hadoop100 上有
32387 Jps
32283 JobTracker
32198 SecondaryNameNode
32021 NameNode
hadoop101 和 hadoop102 上有
30770 TaskTracker
30866 Jps
30666 DataNode
说明运行成功,。,这时你可以运行个 wordcount 这个小例子体验一下

给我留言

留言无头像?