阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Linux下Hadoop1.0.4_单机伪分布式部署和分布式部署

107次阅读
没有评论

共计 10078 个字符,预计需要花费 26 分钟才能阅读完成。

本文是参考 HDFS 分布式文件系统深度的总结,以后学习的参考。

一、现在我们看一下 CentOS5.6(32)的设置流程

1,首先将虚拟机的网卡设置为 host-only
物理机器的虚拟网卡 VMnet1 的 IP 设置为 192.168.1.1,以后建立的虚拟集群都在这个网段

2,启动系统,进入 root 用户

3,CentOS 刚安装完毕,要进行初始化设置,使得一些基本命令可以直接使用,不用再输入绝对路径

如:

[user@localhost ~]$ ifconfig
bash: ifconfig: command not found
3.1 配置 /etc/profile 文件,
在文件末加入以下语句:
PATH=$PATH:/sbin #在 PATH 变量后追加 /sbin 目录
export PATH=$PATH:/sbin#设置变量为全局的

3.2 配置 /home/user/.bash_profile 文件,
在 PATH 后面添加 /sbin:/usr/sbin:/usr/local/sbin:/usr/kerberos/sbin 这几个路径。

4,编辑 /etc/sudoers 文件,使得普通用户可以以 root 权限执行命令,就是命令前可以使用“sudo”
4.1 添加文件的写权限。chmod u+w /etc/sudoers。

4.2 编辑 /etc/sudoers 文件。在 ”root ALL=(ALL) ALL” 下面添加 ”user ALL=(ALL) ALL”(这里的 user 是用户名),退出。

4.3 注释掉:Defaults requiretty 所在的行。即:#Defaults requiretty

4.4 撤销文件的写权限。chmod u-w /etc/sudoers。

5,编辑 /etc/sysconfig/network-scripts/ifcfg-eth0,设置网卡的为静态获取 IP,并设置 IP 地址
DEVICE=eth0
BOOTPROTO=static
HWADDR=00:0C:29:67:87:79
IPADDR=192.168.1.11
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
ONBOOT=yes

6,编辑 /etc/sysconfig/network 和 /etc/hosts 设置机器名

network 修改为:

NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=namenode0


hosts 修改为:

127.0.0.1 localhost
192.168.1.11 namenode0
127.0.0.1 namenode0(可要可不要)

7,重启虚拟机

8,可以看到 sudo 已经可以使用了,ifconfig 也可以直接用了,主机名也已经改了

需要说明的是

VMWare 安装 centos5.6 后,例子:
选用 NAT/Birdged 方式的 ifcfg-eth0 内容如下:
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=eth0
BOOTPROTO=dhcp
DHCPCLASS=
HWADDR=00:0C:29:0E:20:58
ONBOOT=yes
要进行修改如下:
首先将虚拟机的网卡设置为 host-only,物理机器的虚拟网卡 VMnet1 的 IP 设置为 192.168.1.1,以后建立的虚拟集群都在这个网段
编辑 /etc/sysconfig/network-scripts/ifcfg-eth0,设置网卡的为静态获取 IP,并设置 IP 地址
DEVICE=eth0
BOOTPROTO=static
HWADDR=00:0C:29:67:87:79
IPADDR=192.168.1.11
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
ONBOOT=yes

二、安装 JDK

进入 root,安装 jdk。

进入 user/123456 用户 编辑~/.bashrc 文件(或 /etc/profile),加入以下几行

export JAVA_HOME=/home/user/jdk1.6.0_24
export JRE_HOME=/home/user/jdk1.6.0_24/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

source /etc/profile

java -version
可以看到 java 的版本信息,安装成功

 

三、假设虚拟机器

现在我们看一下虚拟集群的架设流程

1,连接到虚拟机 namenode0(192.168.1.11)

2, 查看一下开机自动启动的服务,关闭其中一些不必要的,可以加快开机速度并减少内存占用
在 SecureRCT 中,直接右键就可以粘贴了,
有很多服务没必要开启
chkconfig –list

需要关闭的服务有如下几个:
echo “123456” | sudo -S 这个前缀可以使得普通用户不必在使用 root 权限
的时候再输入密码了,看一下,每次都要输入密码很麻烦。ok 了!这里没问题。

echo “123456” | sudo -S chkconfig sendmail off
echo “123456” | sudo -S chkconfig bluetooth off
echo “123456” | sudo -S chkconfig NetworkManager off
echo “123456” | sudo -S chkconfig acpid off
echo “123456” | sudo -S chkconfig apmd off
echo “123456” | sudo -S chkconfig dund off
echo “123456” | sudo -S chkconfig pand off
echo “123456” | sudo -S chkconfig capi off
echo “123456” | sudo -S chkconfig cups off
echo “123456” | sudo -S chkconfig iptables off
echo “123456” | sudo -S chkconfig ip6tables off
echo “123456” | sudo -S chkconfig irda off
echo “123456” | sudo -S chkconfig isdn off
echo “123456” | sudo -S chkconfig kudzu off
echo “123456” | sudo -S chkconfig lm_sensors off
echo “123456” | sudo -S chkconfig mdmonitor off
echo “123456” | sudo -S chkconfig pcscd off

3,通过 SecureFX 将一些必要的软件 copy 到虚拟机里,速度比较慢。copy 完了

4,关闭虚拟机

5,将虚拟机的镜像文件 copy 成 3,一共 4 个虚拟机

注意:虚拟集群需要足够大的硬盘空间,另外物理机的内存也要足够大,实验中的物理机是 8g 的内存,如果内存不是很大,用 3 - 4 个虚拟机组成集群也可以,其中要有两个是作为 namenode 节点的,其他的作为 datanode 节点,当然把虚拟机的内存调小一些也可以。

6,启动一个新的虚拟机镜像

7,一个虚拟机副本 copy 完并启动之后,vmware 会重新给其网卡分配一个 mac 地址,所以需要修改 mac 地址,IP 也要改

copy 后 mac 相同, 怎么办?,办法:在 VMware 的每个虚拟机器的 settings 中 generate 一个,那这个去修改,不能随机修改

这样就建立了如下的几个虚拟 linux:

Linux 下 Hadoop1.0.4_单机伪分布式部署和分布式部署

7.1 ifconfig 查看其它各个机器的 eth0 网卡的 IP 和 mac 地址

7.2 编辑其它各个机器的 etc/sysconfig/network-scripts/ifcfg-eth0,IP 地址

8,重启网卡

sudo service network restart

9,编辑 /etc/sysconfig/network 和 /etc/hosts 修改机器名

10,重启

11,可以看到这台虚拟机已经配置好了

本文是参考 HDFS 分布式文件系统深度的总结,以后学习的参考。

一、现在我们看一下 CentOS5.6(32)的设置流程

1,首先将虚拟机的网卡设置为 host-only
物理机器的虚拟网卡 VMnet1 的 IP 设置为 192.168.1.1,以后建立的虚拟集群都在这个网段

2,启动系统,进入 root 用户

3,CentOS 刚安装完毕,要进行初始化设置,使得一些基本命令可以直接使用,不用再输入绝对路径

如:

[user@localhost ~]$ ifconfig
bash: ifconfig: command not found
3.1 配置 /etc/profile 文件,
在文件末加入以下语句:
PATH=$PATH:/sbin #在 PATH 变量后追加 /sbin 目录
export PATH=$PATH:/sbin#设置变量为全局的

3.2 配置 /home/user/.bash_profile 文件,
在 PATH 后面添加 /sbin:/usr/sbin:/usr/local/sbin:/usr/kerberos/sbin 这几个路径。

4,编辑 /etc/sudoers 文件,使得普通用户可以以 root 权限执行命令,就是命令前可以使用“sudo”
4.1 添加文件的写权限。chmod u+w /etc/sudoers。

4.2 编辑 /etc/sudoers 文件。在 ”root ALL=(ALL) ALL” 下面添加 ”user ALL=(ALL) ALL”(这里的 user 是用户名),退出。

4.3 注释掉:Defaults requiretty 所在的行。即:#Defaults requiretty

4.4 撤销文件的写权限。chmod u-w /etc/sudoers。

5,编辑 /etc/sysconfig/network-scripts/ifcfg-eth0,设置网卡的为静态获取 IP,并设置 IP 地址
DEVICE=eth0
BOOTPROTO=static
HWADDR=00:0C:29:67:87:79
IPADDR=192.168.1.11
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
ONBOOT=yes

6,编辑 /etc/sysconfig/network 和 /etc/hosts 设置机器名

network 修改为:

NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=namenode0


hosts 修改为:

127.0.0.1 localhost
192.168.1.11 namenode0
127.0.0.1 namenode0(可要可不要)

7,重启虚拟机

8,可以看到 sudo 已经可以使用了,ifconfig 也可以直接用了,主机名也已经改了

需要说明的是

VMWare 安装 centos5.6 后,例子:
选用 NAT/Birdged 方式的 ifcfg-eth0 内容如下:
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=eth0
BOOTPROTO=dhcp
DHCPCLASS=
HWADDR=00:0C:29:0E:20:58
ONBOOT=yes
要进行修改如下:
首先将虚拟机的网卡设置为 host-only,物理机器的虚拟网卡 VMnet1 的 IP 设置为 192.168.1.1,以后建立的虚拟集群都在这个网段
编辑 /etc/sysconfig/network-scripts/ifcfg-eth0,设置网卡的为静态获取 IP,并设置 IP 地址
DEVICE=eth0
BOOTPROTO=static
HWADDR=00:0C:29:67:87:79
IPADDR=192.168.1.11
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
ONBOOT=yes

二、安装 JDK

进入 root,安装 jdk。

进入 user/123456 用户 编辑~/.bashrc 文件(或 /etc/profile),加入以下几行

export JAVA_HOME=/home/user/jdk1.6.0_24
export JRE_HOME=/home/user/jdk1.6.0_24/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

source /etc/profile

java -version
可以看到 java 的版本信息,安装成功

 

四、单机伪分布式部署(简单化 conf)

我们首先拿 namenode0 进行伪分布式部署(conf 简单配置)

1、实现 SSH 无密码登陆
1.1 实现无密码本机登录 namenode0:
ssh-keygen -t dsa -P ” -f ~/.ssh/id_dsa

直接回车,完成后会在 ~/.ssh/ 生成两个文件:id_dsa 和 id_dsa.pub。这两个是成对出现,类似钥匙和锁。再把 id_dsa.pub 追加到授权 key 里面 (当前并没有 authorized_key s 文件):
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

还是要输入密码,一般这种情况都是因为目录或文件的权限问题,

sudo tail /var/log/secure -n 20

看看系统日志,确实是权限问题,、ok 了,.ssh 下的 authorized_keys 权限为 600,其父目录和祖父目录应为 755,

$chmod 755 .
$chmod 755 ~/.ssh
$chmod 600 ~/.ssh/authorized_keys

2、下载 Hadoop-1.0.4.tar.gz 下载 hadoop-1.0.4.bin.tar.gz 也可以。

3, 修改 hadoop 配置文件,指定 JDk 安装路径
vi conf/hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.6.0_21

6, 修改 Hadoop 核心配置文件 core-site.xml,配置 HDFS 的地址和端口号
vi conf/core-site.xml

<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>

7, 修改 Hadoop 中 HDFS 的配置,修改 replication
vi conf/hdfs-site.xml

<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>

8, 修改 Hadoop 中 MapReduce 的配置文件,配置的是 JobTracker 的地址和端口
vi conf/mapred-site.xml

<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>

9, 格式化 Hadoop 的文件系统 HDFS
bin/hadoop namenode -format

10, 启动 hadoop
bin/start-all.sh

最后,验证 Hadoop 是否安装成功。打开浏览器,分别输入一下网址:
http://localhost:50030 (MapReduce 的 Web 页面)
http://localhost:50070 (HDfS 的 web 页面)
如果都能查看,说明安装成功。

五、分布式集群配置

1,准备 3 个服务器,分别为
机器名 IP 地址 作用
namenode0 192.168.1.11 NameNode,JobTracker(也可作为 DataNode,TaskTracker,但没这样做)
datanode00 192.168.1.13 DataNode,TaskTracker

datanode01 192.168.1.14 DataNode,TaskTracker

注:3 台主机必须使用相同的用户名运行 hadoop

1.2 实 现无密码登录其他机器
拷贝 id_dsa.pub 文件到其他机器,scp 是远程 copy 命令,192.168.1.11 上的 id_dsa.pub 已经 copy 到其他机器上了,同样的,将每台机器上的 id_dsa.pub copy 到其他机器上。登录其他机器,执行 cat 1x.pub >> .ssh/authorized_keys ok,都配通了,ssh 的无密码登陆配置,容易出现很多问题,配置时一定要注意!!!

无密码登录是为了在 namenode 启动时能登录从而启动 datanode,所以只需要 master->slave 拷贝就行了。而此处是互相拷贝(datanode 不过不需要登录 namenode 就不需要 copy 了)。如下图

对 namenode 生成 key,同样其它机器也类似,之后把 1.11 的 copy 到其它机器上,

Linux 下 Hadoop1.0.4_单机伪分布式部署和分布式部署

同样其它机器生成后也需要 scp 到 1.11 上,如下的是把 datanode00 的 copy 到其它机器上

Linux 下 Hadoop1.0.4_单机伪分布式部署和分布式部署

如下是 namenode0 和 datanode00 执行 cat 1x.pub >> .ssh/authorized_keys

Linux 下 Hadoop1.0.4_单机伪分布式部署和分布式部署

 

Linux 下 Hadoop1.0.4_单机伪分布式部署和分布式部署

进入 user/123456 账户分别在这两个主机上,按照单机版的安装方法,安装 hadoop,不过为了可以区别开,下面的流程是先对 namenode0 进行配置,然后 copy 拷贝配置后的 hadoop-1.0.4 到其它机器上并修改 conf 中的文件。

2,修改 /usr/local 目录的权限,将 hadoop-1.0.4 的 tar 包 copy 到 /usr/local/ 下
修改 权限 sudo chmod 777 /usr/local/

如果从 datanode00 copy 到 datanode01 上,则需要先[user@datanode01 .ssh]$ sudo chmod 777 /usr/local/

才能[user@datanode00 local]$ scp -r /usr/local/hadoop-1.0.4 datanode01:/usr/local

不然会提示文件权限,不允许访问

3, 配置 ~/.bashrc

在最后加入
export Hadoop_HOME=/usr/local/hadoop-1.0.4

export PATH=$HADOOP_HOME/bin:$PATH

5, 配置 /etc/hosts

192.168.1.11 namenode0
#192.168.1.12 namenode1
192.168.1.13 datanode00
192.168.1.14 datanode01
6, 配置 conf/masters 和 conf/slaves

conf/masters
192.168.1.11

conf/slaves
192.168.1.13
192.168.1.14
7, 配置 conf/hadoop-env.sh
加入
export JAVA_HOME=/usr/java/jdk1.6.0_21

8, 配置 conf/core-site.xml

加入

<name>fs.default.name</name> 
<!–<value>hdfs://0.0.0.0:9000</value> –>
    <value>hdfs://namenode0:9000</value>
</property>
<property> 
<name>hadoop.tmp.dir</name> 
<value>/usr/local/hadoop/tmp</value>
</property>

Linux 下 Hadoop1.0.4_单机伪分布式部署和分布式部署

9, 配置 conf/hdfs-site.xml
加入

<property>
 <name>dfs.replication</name>
 <value>2</value>
</property>

<property> 
  <name>dfs.http.address</name>
 <!– <value>0.0.0.0:50070</value>backup –>
  <value>192.168.1.11:50070</value>
</property>
<property> 
  <name>dfs.name.dir</name> 
 <value>/usr/local/hadoop/local/namenode</value>
</property>
<property>
  <name>dfs.name.edits.dir</name> 
  <value>/usr/local/hadoop/local/editlog</value>
</property>
<property> 
  <name>dfs.data.dir</name>
  <value>/usr/local/hadoop/block</value>
</property>

Linux 下 Hadoop1.0.4_单机伪分布式部署和分布式部署

10, 建立相关的目录(程序会根据上面的配置自动创建目录)
mkdir /usr/local/hadoop/tmp //hadoop 临时目录
mkdir /usr/local/hadoop/local
mkdir /usr/local/hadoop/local/namenode // 镜像存储目录
mkdir /usr/local/hadoop/local/editlog // 日志存储目录
mkdir /usr/local/hadoop/block // 数据块存储目录

如 namenode00, 虽然建立的 block 目录单,它不需要在目录,程序就不会创建,而 datanode 只会创建 tmp 和 block,不会创建 local。

注意 如果在 cygwin 下这样配置,不会自动创建,而且手动创建后需要修改权限为 755,不然会出现 tasktracker 启动失败问题,可以看 tasktrack 的日志

[user@namenode0 local]$ ls -sR hadoop
hadoop:
total 16
8 local 8 tmp

hadoop/local:
total 16
8 editlog 8 namenode

hadoop/local/editlog:
total 28
8 current 8 image 4 in_use.lock 8 previous.checkpoint

hadoop/local/editlog/current:
total 32
16 edits 8 fstime 8 VERSION

hadoop/local/editlog/image:
total 8
8 fsimage

hadoop/local/editlog/previous.checkpoint:
total 24
8 edits 8 fstime 8 VERSION

hadoop/local/namenode:
total 28
8 current 8 image 4 in_use.lock 8 previous.checkpoint

hadoop/local/namenode/current:
total 24
8 fsimage 8 fstime 8 VERSION

hadoop/local/namenode/image:
total 8
8 fsimage

hadoop/local/namenode/previous.checkpoint:
total 24
8 fsimage 8 fstime 8 VERSION

hadoop/tmp:
total 8
8 dfs

hadoop/tmp/dfs:
total 8
8 namesecondary

hadoop/tmp/dfs/namesecondary:
total 4
4 in_use.lock

 

11. 修改 namenode0 配置文件 masters

Linux 下 Hadoop1.0.4_单机伪分布式部署和分布式部署
12 修改 namenode0 配置文件 slaves
Linux 下 Hadoop1.0.4_单机伪分布式部署和分布式部署

13. 修改 mapred-site.xml

<property>
<name>mapred.job.tracker</name>
<value>namenode0:9001</value>
</property>

<property>
<name>mapred.child.tmp</name>
<value>/usr/local/hadoop/tmp</value>
</property>

14,将 hadoop 远程 copy 到其他节点

scp -r hadoop-1.0.4 192.168.1.13:/usr/local/) 192.168.1.12 也可以写为 datanode00(也可 scp -r hadoop-1.0.4user@192.168.1.13:/usr/local/)

 

15,格式化 Active namenode(192.168.1.11)

bin/hadoop namenode -format

16,启动集群 bin/start-all.sh

更多 Hadoop 相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-20发表,共计10078字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中