共计 7836 个字符,预计需要花费 20 分钟才能阅读完成。
1)、机器准备:
物理机器总共 4 台,想配置基于物理机的 Hadoop 集群中包括 4 个节点:1 个 Master,3 个 Salve,
节点之间局域网连接,可以相互 ping 通 IP 分布为:
192.168.216.131 hadoop1
192.168.216.132 hadoop2
192.168.216.133 hadoop3
192.168.216.134 hadoop4
操作系统为 CentOS6.2 64bit
Master 机器主要配置 NameNode 和 JobTracker 的角色,负责总管分布式数据和分解任务的执行;
3 个 Salve 机器配置 DataNode 和 TaskTracker 的角色,负责分布式数据存储以及任务的执行。
其实应该还应该有 1 个 Master 机器,用来作为备用,以防止 Master 服务器宕机,还有一个备用马上启用。
后续经验积累一定阶段后补上一台备用 Master 机器。
2)、创建账户
使用 root 登陆所有机器后,所有的机器都创建 hadoop 用户
useradd hadoop
passwd hadoop
此时在 /home/ 下就会生成一个 hadoop 目录,目录路径为 /home/hadoop
创建相关的目录
定义需要数据及目录的存放路径
定义代码及工具存放的路径
mkdir -p /home/hadoop/source
mkdir -p /home/hadoop/tools
定义数据节点存放的路径到跟目录下的 hadoop 文件夹, 这里是数据节点存放目录需要有足够的空间存放
mkdir -p /hadoop/hdfs
mkdir -p /hadoop/tmp
mkdir -p /hadoop/log
设置可写权限
chmod -R 777 /hadoop
定义 Java 安装程序路径
mkdir -p /usr/java
3)、安装 JDK
在官网下载 jdk1.7(x64)
解压 #tar zvxf jdk-7u10-linux-x64.tar.gz
#mv jdk1.7.0_10 /usr/java/jdk1.7
配置环境变量,执行 cd /etc 命令后执行 vi profile,在行末尾添加
export JAVA_HOME=/usr/java/jdk1.7export
CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$PATH :$JAVA_HOME/bin:
执行 chmod +x profile 将其变成可执行文件
执行 source profile 使其配置立即生效
#source /etc/profile
执行 java -version 查看是否安装成功
这个步骤所有机器都必须安装
4)、修改主机名
修改主机名,所有节点均一样配置
1,连接到主节点 192.168.216.131,修改 network,执行 vim /etc/sysconfig/network,修改 HOSTNAME=hadoop1
2,修改 hosts 文件,执行 cd /etc 命令后执行 vi hosts,在行末尾添加 :
192.168.216.131 hadoop1
192.168.216.132 hadoop2
192.168.216.133 hadoop3
192.168.216.134 hadoop4
3,执行 hostname hadoop1
4,执行 exit 后重新连接可看到主机名以修改 OK
其他节点也修改主机名后添加 Host, 或者 host 文件可以在后面执行 scp 覆盖操作
5)、配置 SSH 无密码登陆
SSH 无密码原理简介 :
首先在 hadoop1 上生成一个密钥对,包括一个公钥和一个私钥,并将公钥复制到所有的 slave(hadoop2-hadoop4)上。
然后当 master 通过 SSH 连接 slave 时,slave 就会生成一个随机数并用 master 的公钥对随机数进行加密,并发送给 master。
最后 master 收到加密数之后再用私钥解密,并将解密数回传给 slave,slave 确认解密数无误之后就允许 master 不输入密码进行连接了
2,具体步骤(在 root 用户和 hadoop 用户登陆情况下执行)
1、执行命令 ssh-keygen -t rsa 之后一路回车,查看刚生成的无密码钥对:cd .ssh 后执行 ll
2、把 id_rsa.pub 追加到授权的 key 里面去。执行命令 cat ~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys
3、修改权限:执行 chmod 600 ~/.ssh/authorized_keys
4、确保 cat/etc/ssh/sshd_config 中存在如下内容
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
如需修改,则在修改后执行重启 SSH 服务命令使其生效 :service sshd restart
将公钥复制到所有的 slave 机器上 :scp~/.ssh/id_rsa.pub192.168.216.133:~/ 然后输入 yes,最后输入 slave 机器的密码;
在 slave 机器上创建 .ssh 文件夹 :mkdir ~/.ssh 然后执行 chmod 700 ~/.ssh(若文件夹以存在则不需要创建);
追加到授权文件 authorized_keys 执行命令 :cat ~/id_rsa.pub >>~/.ssh/authorized_keys 然后执行 chmod 600 ~/.ssh/authorized_keys
重复第 4 步
验证命令 : 在 master 机器上执行 ssh 192.168.216.133 发现主机名由 hadoop1 变成 hadoop3 即成功,
最后删除 id_rsa.pub 文件 :rm -r id_rsa.pub(这步不是必须,子要不和本机的公钥文件冲突就行)
按照以上步骤分别配置 hadoop1,hadoop2,hadoop3,hadoop4,要求每个都可以无密码登录
6)源码下载
HADOOP 版本
最新版本 hadoop-2.0.0-alpha 安装包为 hadoop-2.0.0-alpha.tar.gz
下载官网地址 :http://www.apache.org/dyn/closer.cgi/hadoop/common/
在 /usr/local 目录下解压目录
tar zxvf hadoop-2.0.0-alpha.tar.gz
mv hadoop-2.0.0-alpha hadoop
源码配置修改
/etc/profile
配置环境变量:vim /etc/profile
添加
export HADOOP_DEV_HOME=/usr/local/hadoop #hadoop 安装目录
export PATH=$PATH:$HADOOP_DEV_HOME/bin
export PATH=$PATH:$HADOOP_DEV_HOME/sbin
export HADOOP_MAPARED_HOME=${HADOOP_DEV_HOME}
export HADOOP_COMMON_HOME=${HADOOP_DEV_HOME}
export HADOOP_HDFS_HOME=${HADOOP_DEV_HOME}
export YARN_HOME=${HADOOP_DEV_HOME}
export HADOOP_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop
export HDFS_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop
export YARN_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop
7)配置文件
配置 hadoop-env.sh
vim /usr/hadoop/hadoop-2.0.0-alpha/etc/hadoop/hadoop-env.sh
在末尾添加 exportJAVA_HOME=/usr/java/jdk1.7
core-site.xml
在 configuration 节点里面添加属性
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs:// 192.168.216.131:9000</value>
</property>
slave 配置
vim /home/hadoop/hadoop/etc/hadoop/slaves
添加 slave 的 IP
192.168.216.131
192.168.216.132
192.168.216.133
配置 hdfs-site.xml
vim /home/hadoop/hadoop/etc/hadoop/hdfs-site.xml
添加节点
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/hadoop/hdfs/name</value>
<final>true</final>
</property>
<property>
<name>dfs.federation.nameservice.id</name>
<value>ns1</value>
</property>
<property>
<name>dfs.namenode.backup.address.ns1</name>
<value>192.168.216.131:50100</value>
</property>
<property>
<name>dfs.namenode.backup.http-address.ns1</name>
<value>192.168.216.131:50105</value>
</property>
<property>
<name>dfs.federation.nameservices</name>
<value>ns1</value>
</property>
<property>
<name>dfs.namenode.rpc-address.ns1</name>
<value>192.168.216.131:9000</value>
</property>
<property>
<name>dfs.namenode.rpc-address.ns2</name>
<value>192.168.216.131:9000</value>
</property>
<property>
<name>dfs.namenode.http-address.ns1</name>
<value>192.168.216.131:23001</value>
</property>
<property>
<name>dfs.namenode.http-address.ns2</name>
<value>192.168.216.131:13001</value>
</property>
<property>
<name>dfs.dataname.data.dir</name>
<value>file:/hadoop/hdfs/data</value>
<final>true</final>
</property>
<property>
<name>dfs.namenode.secondary.http-address.ns1</name>
<value>192.168.216.131:23002</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address.ns2</name>
<value>192.168.216.131:23002</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address.ns1</name>
<value>192.168.216.131:23003</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address.ns2</name>
<value>192.168.216.131:23003</value>
</property>
配置 yarn-site.xml
添加节点
<property>
<name>yarn.resourcemanager.address</name>
<value>192.168.216.131:18040</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>192.168.216.131:18030</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>192.168.216.131:18088</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>192.168.216.131:18025</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>192.168.216.131:18141</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce.shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
在 /etc/hadoop 使用以下内容创建一个文件 mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapred.system.dir</name>
<value>file:/hadoop/mapred/system</value>
<final>true</final>
</property>
<property>
<name>mapred.local.dir</name>
<value>file:/hadoop/mapred/local</value>
<final>true</final>
</property>
配置 httpfs-site.xml
添加 httpfs 的选项
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>192.168.216.131</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
同步代码到其他机器
1. 同步配置代码
先在 slaves 的机器上也创建
mkdir -p /usr/local
部署 hadoop 代码,然后只要同步修改过的 etc/hadoop 下的配置文件即可 例如:hadoop1# scp –r hadoop root@hadoop2:/usr/local/
2. 同步 /etc/profile
3. 同步 /etc/hosts
#scp -r /etc/profile root@hadoop2:/etc/profile
#scp -r /etc/hosts root@hadoop2:/etc/hosts
其他机器以此操作
8)Hadoop 启动
格式化集群
hadoop namenode -format -clusterid clustername
hsfs namenode-format
启动 hdfs 执行:
start-dfs.sh
开启 hadoop dfs 服务 ;
启动 Yarn
开启 yarn 资源管理服务:
start-yarn.sh;
启动 httpfs
开启 httpfs 服务
httpfs.sh start
使得对外可以提高 http 的 restful 接口服务
9)测试
安装结果验证
验证 hdfs
在各台机器执行 jps 看进程是否都已经启动了
[root@hadoop1 hadoop]# jps
7396 NameNode
24834 Bootstrap
7594 SecondaryNameNode
7681 ResourceManager
32261 Jps
[root@hadoop2 ~]# jps
8966 Jps
31822 DataNode
31935 NodeManager
进程启动正常
验证是否可以登陆
hadoop fs -ls hdfs:// 192.168.216.131:9000/
hadoop fs -mkdir hdfs:/ 192.168.216.131:9000/testfolder
hadoop fs -copyFromLocal ./xxxx hdfs:// 192.168.216.131:9000/testfolder
hadoop fs -ls hdfs:// 192.168.216.131:9000/testfolder
看以上执行是否正常
验证 map/reduce
相关阅读:
Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm
Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm
Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm
Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm
单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm
搭建 Hadoop 环境(在 Winodws 环境下用虚拟机虚拟两个 Ubuntu 系统进行搭建)http://www.linuxidc.com/Linux/2011-12/48894.htm
更多 Hadoop 相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13