hadoop完全分布式搭建

我有四台服务器分别是 hadoop1、hadoop2、hadoop3、hadoop4

hadoop1是namenode

hadoop2/3/4是DataNode

secondarynamenode也在hadoop2上

hadoop版本为:hadoop-1.2.1-bin.tar.gz

jdk版本为:jdk-7u71-linux-x64.tar.gz


1. 设置ip地址 修改网卡配置

vi /etc/sysconfig/network-scripts/ifcfg-eth0 # 进入系统网卡设置
DEVICE=eth0 #描述网卡对应的设备别名
#BOOTPROTO=dhcp #设置网卡获得ip地址的方式,可能的选项为static,dhcp或bootp,分别对应静态,通过dhcp协议获得的,通过bootp协议获得的ip地址
BOOTPROTO=static # 修改为静态的
IPADDR=192.168.0.50 #如果设置网卡获得 ip地址的方式为静态指定,此字段就指定了网卡对应的ip地址
NETMASK=255.255.255.0 #网卡对应的网络掩码
GATEWAY=192.168.0.1 #设置本机连接的网关的IP地址
DNS1=192.168.0.1 #DNS 至少配置一个
ONBOOT=yes #指明在系统启动时是否激活网卡
#HWADDR=00:0c:29:c7:09:67 #对应的网卡物理地址 若修改应为MACADDR= 只要不一样啊啊啊啊
MACADDR=00:0c:29:c7:09:69

2. 修改主机名(centos7.0不需要修改)磁盘上的主机名
vi /etc/sysconfig/network
NETWORKING=yes #表示系统是否使用网络,一般设置为yes。如果设为no,则不能使用网络,而且很多系统服务程序将无法启动
#NETWORKING_IPV6=no
HOSTNAME=hadoop1 #设置本机的主机名,修改的是保存在磁盘上的主机名称。这里设置的主机名要和/etc/hosts中设置的主机名对应


3、修改内存中的主机名
一般情况下 两则必须要一致,修改磁盘主机名时记得将运行的系统主机名修改成相同的名称。
hostname hadoop1 # 正在运行的系统主机名称做修改为 hadoop1,必须和磁盘上的一致
hostname # 查看当前系统的主机名

4、修改配置的IP映射值
vi /etc/hosts
192.168.0.50 hadoop1 # 强IP映射为一个名字hadoop1
192.168.0.51 hadoop2
192.168.0.52 hadoop3
192.168.0.53 hadoop4


5、修改DNS 配置 vi /etc/resolv.conf
nameserver 192.168.0.1 #nameserver 即是DNS服务viroot器IP地址,第一个是首选,第二个是备用

6、关闭防火墙
hadoop是一个分布式结构,主要通信都是从网络通讯。网络通信涉及到很多端口,有防火墙比较麻烦。为了省事永久关闭防火墙。
service iptables stop #关闭防火墙 临时关闭 下次开启还会自动开启 可以设置永久性关闭防火墙
service iptables status # 查看防火墙状态 是否关闭

# 主要关闭下面的,上面的关闭了,重启后会再次开启
chkconfig iptables off #永久性关闭防火墙
chkconfig --list | grep iptables # 将列出的的所有配置项 做一个过滤 将包含iptables的项显示到屏幕上

getenforce #查看美国国家安全局的内核增强
setenforce 0 #0是关闭
## 关闭它
vi /etc/sysconfig/selinux
SELINUX=disabled



8、修改时间 时间同步
1. date 查看当前时间 差距较大需要同步时间

2、设置时间和日期
将CentOS系统日期设定成1996年6月10日的命令
date -s 06/22/96  #修改日期
将CentOS系统时间设定成下午1点52分0秒的命令
date -s 13:52:00  #修改时间

3. 将当前时间和日期写入BIOS,避免重启后失效
hwclock -w

4.定时同步时间 这是时间服务器ntp
# /usr/sbin/ntpdate 210.72.145.44 > /dev/null 2>&1

9、安装jdk
1、将jdk-7u71-linux-x64.tar.gz上传到 /usr 目录下
2、tar -xzvf hadoop-1.2.1-bin.tar.gz ## 解压到 当前目录下
3、vi /etc/profile ## 配置环境变量
export JAVA_HOME=/usr/awenhadoop/jdk1.7.0_71
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export HADOOP_HOME=/usr/awenhadoop/hadoop-1.2.1   #这一步在安装hadoop后配置
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
4、安装完后执行source /etc/profile

10、安装hadoop
1、将hadoop-1.2.1-bin.tar.gz上传到 /usr 目录下
2、tar -xzvf /usr/hadoop-1.2.1 ## 解压到 /usr 目录下
3、vi /etc/profile ## 配置环境变量
export JAVA_HOME=/usr/java/jdk/jdk1.6.0_13
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export HADOOP_HOME=/usr/hadoop-1.2.1
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

4、安装完后执行source /etc/profile



5、vi hadoop-env.sh

#hadoop中的相关配置

export JAVA_HOME=/usr/jdk1.7.0_71 # 配置环境变量

export HADOOP_HOME_WARN_SUPPRESS=1 # Warning: $HADOOP_HOME is deprecated. 的解决


################# 以下是hadoop相关的配置 进入 cd hadoop-1.2.1/conf
11、
1、core-site.xml # 这里面配置的是namenode
cd hadoop-1.2/conf
vi core-site.xml

<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.0.50:9000</value> ##设置namenode
</property>

<property>
<name>hadoop.tmp.dir</name>
<value>/usr/hadoop-1.2</value> ## 设置namenode的工作目录,不设置默认工作目录在/tmp 目录下,下次启动会被清空
</property> ##hadoop.tmp.dir /tmp/hadoop-${user.name}
</configuration>

dfs.namenode.name.dir file://${hadoop.tmp.dir}/dfs/name
namenode的工作目录 在tmp下再建立 ../dfs/name 的工作目录
其中fs.default.name为namenode的交互端口,注意不要使用已经占用的端口就好
hadoop.tmp.dir是用来存储其他临时目录的根目录 4.3.3在hdfs-site.xml文件中添加配置信息

2、hdfs-site.xml
vi hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>

<property>
<name>dfs.name.dir</name>
<value>/home/hadoop/hdfs/name</value>
</property>

<property>
<name>dfs.data.dir</name>
<value>/home/hadoop/hdfs/data</value>
</property>
</configuration>
dfs.name.dir:存贮在本地的名字节点数据镜象的目录,作为名字节点的冗余备份
dfs.data.dir:datanode存储数据的根目录
dfs.replication:冗余数量,备份的数据量位2,默认为3,不能大于DataNode数目
dfs.http.address:namenode的http协议访问地址与端口 4.3.4在mapred-site.xml文件中添加配置信息
dfs.replication 3 # 默认副本数为3,原则上副本数要小于等于DataNode的节点数

3、mapred-site.xml
vi mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>hadoop1:9002</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>/home/hadoop/mapred/local</value>
</property>
<property>
<name>mapred.system.dir</name>
<value>/home/hadoop/mapred/system</value>
</property>
<property>
<name>mapred.compress.map.output</name>
<value>true</value>
</property>
</configuration>

mapred.job.tracker:jobTracker的交互端口
mapred.local.dir: map中间数据存放位置
mapred.system.dir: mapred控制文件存放位置
mapred.compress.map.output: 是否压缩输出 4.3.5在master文件中写入hadoop namenode节点

4、 设置DataNode
vi slaves # 这里面配置的是DataNode
hadoop2 # 映射的主机IP
hadoop3

5、设置secondaryNameNode
vi masters # 这里面配置的是secondaryNamenode
hadoop2
在hadoop2上继续设置secondnamenode,只要和namenode不在同一台机器上,那个机器都可以

一台机器两个节点可以。伪分布式一台机器3各节点。

####################################################################################


我的思路是先将hadoop1这台搭好、然后复制3次,作为hadoop2/3/4的虚拟机。修改对应的IP、主机名,记得和内存中主机名一致或reboot、MACADDR地址值。

ssh互信:

1、每台机器上都执行 ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa # 生成认证公钥密钥

2、每一个DataNode都将生成的公钥scp给namenode  

scp ~/.ssh/id_rsa.pub root@hadoop1:~/.ssh/hadoop2_id_rsa.pub # 发送公钥给别的机器 

。。。

3、namenode将DataNode发送过来的公钥追加到 anthorized_keys 中,自己的也记得追加

cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

4、分别将认证keys scp给每一台DataNode

scp ~/.ssh/authorized_keys root@hadoop2:~/.ssh/authorized_keys














评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值