博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hadoop学习笔记三:分布式hadoop部署
阅读量:5283 次
发布时间:2019-06-14

本文共 6599 字,大约阅读时间需要 21 分钟。

  前语:如果看官是个比较喜欢使用现成软件的,比较推荐使用,这个使用参照官方文档即可,是比较傻瓜式的,这里不做介绍。本文主要是针对自己部署分布式hadoop。

  1.修改机器名

[root@localhost root]# vi /etc/sysconfig/network

将HOSTNAME=*** 一栏改成适当的名称,笔者两台机器采用HOSTNAME=Hadoop00,HOSTNAME=Hadoop01这种方式。

  2.修改IP,网关,掩码等

vim /etc/sysconfig/network-scripts/ifcgf-eth0#NETMASK 网络掩码#IPADDR IP地址#GATEWAY 默认网关IP地址

按照实际情况,配置两台机器的网络信息。

  3.修改hosts文件,便于通过名字发现(可以认为是本地DNS)

[root@localhost root]# vi /etc/hosts末尾添加:192.168.1.112 Hadoop00192.168.1.113 Hadoop01#IP变了,是因为回家了,家里的路由网关为192.168.1.1,所以把ip改了

每一台需要以机器名进行通讯的机器,都要在上面配置,所以一般来说,依然还是建议以IP来通讯,毕竟在有些特殊情况,机器名可能会存在失效的情况。

  

  4.创建hadoop用户组,用户 (hadoop用户最好也建个密码)

[root@localhost root]# groupadd hadoop useradd -g hadoop -G hadoop hadoop[root@localhost root]# passwd hadoopChanging password for user hadoop.New password: BAD PASSWORD: it is based on a dictionary wordRetype new password: passwd: all authentication tokens updated successfully.

  5.SSH无密码登录(需要安装有ssh和rsync服务)

重点:在nameNode中生成公私钥对,然后把公钥发送到各个dataNode

故,在Master节点做如下内容:

[root@localhost root]# su - hadoop[hadoop@localhost hadoop]$ ssh-keygen -t rsa -P ''

此处,密钥文件生成的默认路径为/home/hadoop/.ssh

将id_rsa.pub追加到授权的key里面

[hadoop@localhost hadoop]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

非常重要:对authorized_keys赋权,同时,以root用户修改/etc/ssh/sshd_config

[hadoop@localhost hadoop]$ chmod 600 ~/.ssh/authorized_keys

回到root用户

[hadoop@localhost hadoop]$ exit;[root@localhost hadoop]# vi /etc/ssh/sshd_config

#RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeysFile     .ssh/authorized_keys
前面注释去掉,变成
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile     .ssh/authorized_keys
重启SSH

[root@localhost hadoop]# service sshd restart

验证本机:

[root@localhost root]# su - hadoop[hadoop@localhost hadoop]$ ssh localhostThe authenticity of host 'localhost (127.0.0.1)' can't be established.RSA key fingerprint is 82:5a:c0:ab:00:be:1d:ad:92:66:29:e9:cc:81:6d:2f.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added 'localhost' (RSA) to the list of known hosts.[hadoop@localhost hadoop]$

ok,本机没问题,那就把公钥传到其他dataNode机器上

scp ~/.ssh/id_rsa.pub hadoop@192.168.1.113:~/

上面的命令是复制文件"id_rsa.pub"到服务器IP为"192.168.1.113"的用户为"hadoop"的"/home/hadoop/"下面

由于到这步依然没有无密码登录功能,故依然是需要输入密码的,用dataNode的hadoop密码登录即可

[hadoop@localhost hadoop]$ scp ~/.ssh/id_rsa.pub hadoop@192.168.1.113:~/hadoop@192.168.1.113's password: id_rsa.pub           100% |************************************************************|   238       00:00    [hadoop@localhost hadoop]$

以下是对各个dataNode机器的配置,如有有多台dataNode机器的话,这里以192.168.1.113为例

[hadoop@localhost hadoop]$ mkdir ~/.ssh [hadoop@localhost hadoop]$ chmod 700 ~/.ssh [hadoop@localhost hadoop]$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys [hadoop@localhost hadoop]$ chmod 600 ~/.ssh/authorized_keys

依旧以root用户修改/etc/ssh/sshd_config,参照前面对nameNode的操作,包括重启SSH

将所有dataNode配置完后,记得删掉id_rsa.pub文件

rm -r ~/id_rsa.pub

现在,从nameNode可以无密码登录到各个dataNode了,但是dataNode登录nameNode依然需要密码,有时间可以将上面的步骤再做一遍,把各个dataNode也做成无密码

登录nameNode,练手。 步骤为: 在dataNode:

su - hadoop ssh-keygen -t rsa -P '' cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys scp ~/.ssh/id_rsa.pub     hadoop@192.168.1.112:~/

在nameNode:

cat ~/id_rsa.pub >> ~/.ssh/authorized_keys rm -r ~/id_rsa.pub

  6.Hadoop集群安装

以nameNode为例,其余dataNode安装方法一样。

以root用户登录nameNode后,上传
官网下载的hadoop-1.2.1.tar.gz包至/home/hadoop;

cp /home/hadoop/hadoop-1.2.1.tar.gz /usr     #把"hadoop-1.2.1.tar.gz"复制到"/usr"目录下面cd /usr    #进入"/usr"目录tar -zxvf hadoop-1.2.1.tar.gz    #解压"hadoop-1.0.0.tar.gz"安装包mv hadoop-1.2.1 hadoop    #将"hadoop-1.0.0"文件夹重命名"hadoop"chown -R hadoop:hadoop hadoop    #将文件夹"hadoop"读权限分配给hadoop用户rm -rf hadoop-1.2.1.tar.gz     #删除"hadoop-1.0.0.tar.gz"安装包

添加hadoop环境变量 修改/etc/profile文件,在末尾添加

# set hadoop path export HADOOP_HOME=/usr/hadoop export PATH=$PATH:$HADOOP_HOME/bin

重启生效: source /etc/profile(也可以参照前面jdk安装的. /etc/profile)

mkdir /usr/hadoop/tmp chown -R hadoop:hadoop tmpmkdir /usr/hadoop/data chmod 755 /usr/hadoop/data

  7.配置hadoop

修改/usr/hadoop/conf目录下的hadoop-env.sh文件,末尾添加:

#set java environmentexport JAVA_HOME=/usr/java/jdk1.6.0_45

如果忘了,可以通过echo $JAVA_HOME先查看

修改Hadoop核心配置文件core-site.xml,这里配置的是HDFS的地址和端口号:

hadoop.tmp.dir
/usr/hadoop/tmp
A base for other temporary directories.
fs.default.name
hdfs://192.168.1.112:9000

修改Hadoop中HDFS(hdfs-site.xml)的配置,配置的备份方式默认为3:

dfs.data.dir
/usr/hadoop/data
dfs.replication
1

修改Hadoop中MapReduce(mapred-site.xml)的配置文件,配置的是JobTracker的地址和端口:

mapred.job.tracker
http://192.168.1.112:9001

配置masters文件:

vi masters
一般来说,用机器名或者ip都可以,但是推荐用ip。

[root@localhost conf]# vi masters 192.168.1.112

配置slaves文件(Master主机特有)

vi slaves
将dataNode节点的机器都加进来,一条一行。一般来说,用机器名或者ip都可以,但是推荐用ip。

[root@localhost conf]# vi slaves192.168.1.113

将以上步骤在所有dataNode机器上装一遍,slaver的不用做。也可以直接将nameNode上的/usr/hadoop直接复制到dataNode机器上,再做配置。这里采用复制:

scp -r /usr/hadoop root@192.168.1.113:/usr/

root登录dataNode机器,更改其用户组

chown -R hadoop:hadoop hadoop

给各个dataNode添加hadoop环境变量

添加hadoop环境变量
修改/etc/profile文件,在末尾添加

# set hadoop pathexport HADOOP_HOME=/usr/hadoopexport PATH=$PATH:$HADOOP_HOME/bin

重启生效

source /etc/profile(也可以参照前面jdk安装的. /etc/profile)

   8.启动验证

首先,关闭所有机器防火墙

service iptables stop

以hadoop用户登录,格式化DHFS文件系统

hadoop namenode -format(备注:只需一次,下次启动不再需要格式化,只需 start-all.sh)

有告警:

Warning: $HADOOP_HOME is deprecated.
可以编辑/etc/profile,添加(所有机器都要添加)
export HADOOP_HOME_WARN_SUPPRESS=1
重启生效。

依然有错误:

15/01/10 14:19:52 ERROR namenode.NameNode: java.io.IOException: Cannot create directory /usr/hadoop/tmp/dfs/name/current
原来是tmp属于root用户组,更改tmp的所属用户组。
启动:
start-all.sh

停止:

stop-all.sh
修改dataNode,以下目录中的VERSION文件,将namespaceID=1505787769更改成与nameNode一致
/usr/hadoop/tmp/dfs/name/current
或者清除nameNode的tmp数据,重新format:

cd ~rm -rf /usr/hadoop/tmpmkdir /usr/hadoop/tmprm -rf /tmp/hadoop*hadoop namenode -formatstart-all.sh

jps查看是否启用,发现dataNode节点没起来,查看日志:

2015-01-10 14:59:49,121 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Invalid directory in dfs.data.dir: Incorrect permission for /usr/hadoop/tmp/dfs/data, expected: rwxr-xr-x, while actual: rwxrwxr-x
2015-01-10 14:59:49,121 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: All directories in dfs.data.dir are inval
id.
原来是权限问题:

chmod 755 /usr/hadoop/tmp/dfs/data

重启hadoop

转载于:https://www.cnblogs.com/mahone-lee/p/note_3.html

你可能感兴趣的文章
javascript的发展及个人笔记
查看>>
全选,反全选,反选,获取选中的值,根据子选择控制全选按钮
查看>>
[CF#250 Div.2 D]The Child and Zoo(并查集)
查看>>
博客园博客插入公式
查看>>
hdu 1028 Ignatius and the Princess III(母函数入门+模板)
查看>>
Ubuntu下配置安装telnet server
查看>>
Codeforces 235 E Number Challenge
查看>>
ubuntu 常见命令整理
查看>>
EJBCA安装教程+postgresql+wildfly10
查看>>
(五十四)涂鸦的实现和截图的保存
查看>>
配置EditPlus使其可以编译运行java程序
查看>>
java中的占位符\t\n\r\f
查看>>
MySQL通过frm 和 ibd 恢复数据过程
查看>>
SRS源码——Listener
查看>>
Java面向对象抽象类案例分析
查看>>
对SPI、IIC、IIS、UART、CAN、SDIO、GPIO的解释
查看>>
Thymeleaf模板格式化LocalDatetime时间格式
查看>>
庖丁解“学生信息管理系统”
查看>>
Pyltp使用
查看>>
其他ip无法访问Yii的gii,配置ip就可以
查看>>