1部署介绍
1.1环境说明
集群中包括4个节点:1个Master,3个Salve,节点之间局域网连接,可以相互ping通。节点IP地址分布如下:
机器名称 |
IP地址 |
Master |
192.168.1.2 |
Salve1 |
192.168.1.3 |
Salve2 |
192.168.1.4 |
Salve3 |
192.168.1.5 |
Master机器主要配置NameNode和JobTracker的角色,负责总管分布式数据和分解任务的执行;3个Salve机器配置DataNode和TaskTracker的角色,负责分布式数据存储以及任务的执行。
1.2网络配置
1)查看当前机器名称
用下面命令进行显示机器名称,如果跟规划的不一致,要按照下面进行修改。
hostname
2)修改机器名
1. 打开/etc/hostname文件;
sudo gedit /etc/hostname
2. 将/etc/hostname文件中的ubuntu改为你想取的机器名。重启系统后才会生效。
3)配置hosts文件(必须)
"/etc/hosts"这个文件是用来配置主机将用的DNS服务器信息,是记载LAN内接续的各主机的对应[HostName和IP]用的。当用户在进行网络连接时,首先查找该文件,寻找对应主机名(或域名)对应的IP地址。
sudo gedit /etc/hosts
2.创建hadoop用户组和用户
2.1. 创建hadoop用户组;
sudo addgroup hadoop
2.2. 创建hadoop用户;
sudo adduser -ingroup hadoop hadoop
2.3. 给hadoop用户添加权限;
sudo gedit /etc/sudoers
按回车键后就会打开/etc/sudoers文件了,给hadoop用户赋予root用户同样的权限。
在root ALL=(ALL:ALL) ALL下添加hadoop ALL=(ALL:ALL) ALL
3. SSH无密码验证配置
3.1安装SSH
sudo apt-get install ssh安装SSH协议
sudo apt-get install rsync (rsync是一个远程数据同步工具)
3.2配置节点间无密码登录
1
、转换成
hadoop
用户
su hadoop
2、生成无密码密钥对
ssh-keygen –t rsa –P “”
3、把id_rsa.pub追加到授权的key里面去
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
4、修改文件"authorized_keys"权限
chmod 600 ~/.ssh/authorized_keys
5、用root用户登录服务器修改SSH配置文件"/etc/ssh/sshd_config"的下列内容
RSAAuthentication yes # 启用 RSA 认证
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)
6、退出root登录,使用hadoop普通用户验证是否成功。
ssh localhost
7、接下来的事儿是把公钥复制所有需要无密码访问的机器上。使用下面的命令格式进行复制公钥:
scp ~/.ssh/id_rsa.pub 远程用户名@远程服务器IP:~/
8、然后将公钥追加到该节点的授权文件"authorized_keys"中去
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
9、最后记得把"/home/hadoop/"目录下的"id_rsa.pub"文件删除掉。
rm –r ~/id_rsa.pub
4Java环境安装
所有的机器上都要安装JDK,现在就先在Master服务器安装,然后其他服务器按照步骤重复进行即可。安装JDK以及配置环境变量,需要以"root"的身份进行。
4.1安装jdk
1、首先用root身份登录"Master.Hadoop"后在"/usr"下创建"java"文件夹
mkdir /usr/java
2、把相应的安装包复制到/usr/java目录下
cp /home/hadoop/ jdk-6u31-linux-i586.bin /usr/java
3、接着进入"/usr/java"目录下通过下面命令使其JDK获得可执行权限,并安装JDK。
chmod +x jdk-6u31-linux-i586.bin(修改权限)
./jdk-6u31-linux-i586.bin(运行)
4、该过程可以直接下载jdk*.tar.gz包解压之后移动到/usr/java目录下,然后修改所属用户和组。
chown -R root:root /usr/java
4.2配置环境变量
编辑"/etc/profile"文件,在后面添加Java的"JAVA_HOME"、"CLASSPATH"以及"PATH"内容。
# set java environment
export JAVA_HOME=/usr/java/jdk1.6.0_31
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
4.3生效并验证
source /etc/profile
java -version
5 hadoop集群安装
5.1安装hadoop
1、下载hadoop并解压,然后将解压后的文件夹移动到合适的目录下,并把读权限分配给hadoop用户(非常重要)
chown –R hadoop:hadoop hadoop-1.2.1
2、把Hadoop的安装路径添加到"/etc/profile"中,修改"/etc/profile"文件(配置java环境变量的文件),将以下语句添加到末尾,并使其有效:
# set hadoop path
export HADOOP_HOME_WARN_SUPPRESS=1
export HADOOP_HOME=#####
export PATH=$PATH :$HADOOP_HOME/bin
5.2配置hadoop
1)配置hadoop-env.sh
该"hadoop-env.sh"文件位于"~/conf"目录下。
export JAVA_HOME=/usr/java/jdk1.6.0_31
2)配置core-site.xml文件
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>$HADOOP_HOME/tmp</value>
(备注:请先在 /usr/hadoop 目录下建立 tmp 文件夹)
<description>A base for other temporary directories.</description>
</property>
<!-- file system properties -->
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.1.2:9000</value>
</property>
</configuration>
3)配置hdfs-site.xml文件
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
(备注:replication 是数据副本数量,默认为3,salve少于3台就会报错)
</property>
<configuration>
4)配置mapred-site.xml文件
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>http://192.168.1.2:9001</value>
</property>
</configuration>
5)配置masters文件
去掉"localhost",加入Master机器的IP:192.168.1.
sudo gedit masters
6)配置slaves文件(Master主机特有)
去掉"localhost",加入集群中所有Slave机器的IP,也是每行一个。
sudo gedit slaves
7)克隆hadoop
将 Master上配置好的hadoop所在文件夹复制到所有的Slave的对应目录下(实际上Slave机器上的slavers文件是不必要的,复制了也没问题)。(备注:此时用户可以为hadoop也可以为root),修改权限,配置/etc/profile
5.3启动
1)格式化HDFS文件系统
在"Master "上使用普通用户hadoop进行操作。(备注:只需一次,下次启动不再需要格式化,只需 start-all.sh)
hadoop namenode –format
2)启动hadoop
start-all.sh