标签:
在前面我有写过关于 Hadoop 集群的搭建,不过之前的 Hadoop 是 1.x 版本的。目前是基于 2.x 版本的 Hadoop,与之前的 1.x 版本的差别还是挺大的。以及更为详细的 SSH 免密码互连登录的配置过程。所以,这里也把我搭建的过程记录下来了。希望于你有益。
著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
本文作者:Coding-Naga
发表日期: 2016年5月4日
本文链接:http://blog.csdn.net/lemon_tree12138/article/details/51316883
来源:CSDN
更多内容:分类 >> 大数据之 Hadoop
$ sudo service iptables stop
$ sudo chkconfig iptables off # 设置防火墙不随系统启动,这一条你可以选择性添加
$ sudo vim /etc/modprobe.d/dist.conf
添加如下内容
alias net-pf-10 off
alias ipv6 off
重启后验证操作
$ lsmod|grep ipv6
$ sudo vim /etc/selinux/config
修改后的内容如下:
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
# SELINUX=enforcing
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
(1) hostname
$ sudo vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=master
GATEWAY=172.16.2.20
(2)
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.2.144 master
172.16.2.171 slave1
172.16.2.91 slave2
关于 Java 的安装,你可以有两种选择。一是 openjdk,另一个就是 Oracle jdk。这里我选择的是 Oracle jdk,而推荐的也是 Oracle jdk。
安装过程很简单,这里就不赘述了。
配置 SSH 的目的在于实现集群中的机器可以免密码相互登录。
$ sudo yum -y install openssh-server
$ sudo yum -y install openssh-clients
这里的 openssh-clients 不是必须安装的。如果你安装 ssh-server 完成之后,运行 ssh 出现系统无法识别 ssh 的话,需要另外安装 openssh-clients。
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
Bad escape character ‘rsion‘.
如果 SSH 安装成功,验证时会出现类似上面的版本信息。
$ mkdir -p ~/.ssh
$ chmod 700 ~/.ssh
如果你在安装完SSH后,这些目录都未自动生成,请自行创建。如果要免密码登录,.ssh 文件夹的权限也要修改。
执行如下指令:
$ sudo vim /etc/ssh/sshd_config
在文件中找到如下内容,将内容前面的注释去掉。如果没有,就自己添加吧。
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
这一步是至关重要的,如果没有这一步,那么只能免密码登录本机,而无法免密码登录其他的机子了。
这里比如,如果你想让 master 主机免密码登录 slave 主机,那么就要修改 master 主机的配置文件。
$ sudo service sshd restart
由于修改了 ssh 的配置文件,所以这里必须重启 ssh 服务才能生效。
$ ssh-keygen -t dsa -P ‘‘ -f ~/.ssh/id_dsa
指令的相关参数说明如下:
ssh-keygen 表示生成密钥
-t 表示指定生成的密钥类型
dsa 是dsa密钥认证的意思,即密钥类型
-P 提供密语
-f 指定生成的密钥文件
$ scp id_dsa.pub slave1:~/.ssh/
这里是将 master 的公钥下发到 slave 机群中。在第一次下发的时候,会有一些连接提示及密码提示。
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
将 master 主机上的公钥添加到用于认证的公钥文件中,authorized_keys 是用于认证的公钥文件。并修改 认证文件的权限。
此步骤是在 slave 机上完成。
[hadoop@master .ssh]$ ssh slave1
Last login: Thu Apr 28 15:17:57 2016 from master
[hadoop@slave1 ~]$
上面的过程只是单向的免密码登录。如果想要两两相互免密码登录,则需要集群中的所有机器都有其他机器的公钥。而具体操作也很简单,这里就不赘述了。
这里可以在 Apache 的官网上下载,如果官网已经下架,就去百度或是 Google 里找,总会有的。
将下载下来的 Hadoop-2.2.0 用 WinSCP 上传到虚拟机上(当然你也可以直接在虚拟机里下载),解压,并重命名为 hadoop。
$ tar -zxvf hadoop-2.2.0.tar.gz
$ mv hadoop-2.2.0 hadoop
$ cd hadoop
$ chmod -Rv 755 ./bin/
$ chmod -Rv 755 ./sbin/
$ mkdir -p /home/hadoop/dfs/name
$ mkdir -p /home/hadoop/dfs/data
$ mkdir -p /home/hadoop/hadoop/tmp
上面对两个文件夹进行权限修改,是因为在这两个文件里有一些可执行文件,如果不修改他们的执行权限,那在启动时就会有权限限制。
对于上面的下载安装步骤,基本已经 ok,不过如果想要正常使用,还是要配置,而 Hadoop 环境部署的核心就是此处的配置文件。
需要修改的配置文件列表如下:
1. /etc/profile
2.
4.
6.
8. ${HADOOP_HOME}/etc/hadoop/slaves
这是系统里的环境变量配置文件。配置此项目的目的是在于方便在任意目录都可以使用 Hadoop/bin 里的可执行文件(当然你也可以把 $HADOOP_HOME/sbin 加进去)。
export HADOOP_HOME=/home/hadoop/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
在环境变量配置文件的合适位置添加如下 JAVA_HOME 信息:
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_92
在环境变量配置文件的合适位置添加如下 JAVA_HOME 信息:
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_92
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hadoop/hadoop/tmp</value>
</property>
</configuration>
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:50090</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hadoop/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
dfs.replication 的值一般设为 3,但我们只有两个 Slave 节点,所以 dfs.replication 的值重置为 2。
<configuration>
<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>
</configuration>
需要先重命名,默认文件名为 mapred-site.xml.template.
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
需要先重命名,默认文件名为 yarn-site.xml.template.
slave1
slave2
这里说的下发就是把配置好的 hadoop,复制到另外两台 Slave 机中。下发的操作是基于 SSH 的,如下:
$ scp -r ~/hadoop slave1:~/
$ scp -r ~/hadoop slave2:~/
在启动 Hadoop 之前,我们需要先格式化 HDFS。如下:
$ hadoop namenode –format
对于正常格式化的操作,这里会显示如下输出:
DEPRECATED: Use of this script to execute hdfs command is deprecated.
Instead use the hdfs command for it.
16/05/04 10:15:38 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = master/172.16.2.117
STARTUP_MSG: args = [-format]
STARTUP_MSG: version = 2.2.0
STARTUP_MSG: classpath = /home/hadoop/hadoop/etc/hadoop: ( ... 此处省略 N 条 ... ) :/home/hadoop/hadoop/contrib/ capacity-scheduler/*.jar
STARTUP_MSG: build = Unknown -r Unknown; compiled by ‘root‘ on 2013-11-22T03:4 1Z
STARTUP_MSG: java = 1.8.0_92
************************************************************/
( ... 此处省略 N 条 ... )
16/05/04 10:15:45 INFO common.Storage: Storage directory /home/hadoop/dfs/name has been successfully formatted.
16/05/04 10:15:45 INFO namenode.FSImage: Saving image file /home/hadoop/dfs/name/current/fsimage.ckpt_0000000000000000000 using no compression
16/05/04 10:15:45 INFO namenode.FSImage: Image file /home/hadoop/dfs/name/current/fsimage.ckpt_0000000000000000000 of size 198 bytes saved in 0 seconds.
16/05/04 10:15:45 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
16/05/04 10:15:45 INFO util.ExitUtil: Exiting with status 0
16/05/04 10:15:45 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at master/172.16.2.117
************************************************************/
$ ${HADOOP_HOME}/sbin/start-dfs.sh
对于正常的启动来说,会有类似如下的输出内容:
Starting namenodes on [master]
The authenticity of host ‘master (172.16.2.144)‘ can‘t be established.
RSA key fingerprint is 98:4f:21:03:76:e2:e9:96:77:3e:88:c5:88:70:04:cf.
Are you sure you want to continue connecting (yes/no)? yes
master: Warning: Permanently added ‘master,172.16.2.144‘ (RSA) to the list of kn own hosts.
master: starting namenode, logging to /home/hadoop/hadoop/logs/hadoop-hadoop-nam enode-master.out
hadoop@slave1‘s password: hadoop@slave2‘s password:
slave1: starting datanode, logging to /home/hadoop/hadoop/logs/hadoop-hadoop-dat anode-slave1.out
slave2: starting datanode, logging to /home/hadoop/hadoop/logs/hadoop-hadoop-dat anode-slave2.out
Starting secondary namenodes [master]
master: starting secondarynamenode, logging to /home/hadoop/hadoop/logs/hadoop-h adoop-secondarynamenode-master.out
$ ${HADOOP_HOME}/sbin/start-yarn.sh
对于正常的启动来说,会有类似如下的输出内容:
starting yarn daemons
starting resourcemanager, logging to /home/hadoop/hadoop/logs/yarn-hadoop-resourcemanager-master.out
hadoop@slave2‘s password: hadoop@slave1‘s password:
slave2: starting nodemanager, logging to /home/hadoop/hadoop/logs/yarn-hadoop-nodemanager-slave2.out
slave1: starting nodemanager, logging to /home/hadoop/hadoop/logs/yarn-hadoop-nodemanager-slave1.out
$ ${HADOOP_HOME}/sbin/start-all.sh
对于正常的启动来说,会有类似如下的输出内容:
[hadoop@master hadoop]$ ./sbin/start-all.sh
This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh
Starting namenodes on [master]
master: starting namenode, logging to /home/hadoop/hadoop/logs/hadoop-hadoop-namenode-master.out
slave2: starting datanode, logging to /home/hadoop/hadoop/logs/hadoop-hadoop-datanode-slave2.out
slave1: starting datanode, logging to /home/hadoop/hadoop/logs/hadoop-hadoop-datanode-slave1.out
Starting secondary namenodes [master]
master: starting secondarynamenode, logging to /home/hadoop/hadoop/logs/hadoop-hadoop-secondarynamenode-master.out
starting yarn daemons
starting resourcemanager, logging to /home/hadoop/hadoop/logs/yarn-hadoop-resourcemanager-master.out
slave2: starting nodemanager, logging to /home/hadoop/hadoop/logs/yarn-hadoop-nodemanager-slave2.out
slave1: starting nodemanager, logging to /home/hadoop/hadoop/logs/yarn-hadoop-nodemanager-slave1.out
(1) 验证启动的进程
$ jps
Master 端
[hadoop@master hadoop]$ jps
3202 Jps
2923 ResourceManager
2795 SecondaryNameNode
2637 NameNode
Slave 端
[hadoop@slave1 ~]$ jps
2256 DataNode
2419 Jps
2319 NodeManager
(2) 网页验证
# 查看 HDFS
登录浏览器,输入 http://master:50070
# 查看 RM
登录浏览器,输入 http://master:8088
$ ${HADOOP_HOME}/sbin/stop-all.sh
对于正常的启动来说,会有类似如下的输出内容:
[hadoop@master hadoop]$ ${HADOOP_HOME}/sbin/stop-all.sh
This script is Deprecated. Instead use stop-dfs.sh and stop-yarn.sh
Stopping namenodes on [master]
master: stopping namenode
slave2: stopping datanode
slave1: stopping datanode
Stopping secondary namenodes [master]
master: stopping secondarynamenode
stopping yarn daemons
no resourcemanager to stop
slave2: no nodemanager to stop
slave1: no nodemanager to stop
no proxyserver to stop
标签:
原文地址:http://blog.csdn.net/lemon_tree12138/article/details/51316883