1. 集群网络设计
每一个结点都对应一台主机,每台主机都是ubuntu系统。
namenode结点: 192.168.1.103 yufengnode
datanode结点: 192.168.1.102 zhswynode
192.168.1.101 gexbnode
192.168.1.100 liuxdnode
为了让ip固定,我们把所有的主机都连入了同一个局域网中,使用了一个小型的路由器。Ip地址获取使用DHCP,并且将主机的ip地址和MAC地址进行了绑定。
2. 单结点配置
2.1 新建root组用户,在本次配置过程中我们使用了dizzydocgit的用户名
注意:集群中的每个用户都必须使用相同的用户名,将hadoop安装到相同的目录下,这样便于统一hadoop的启动路径。
2.2 配置java
从官网下载linux 版本的jdk解压,复制解压后的文件夹到/usr/local/目录下。
在/etc/bash_completion.d/目录下新建文件java_env,并添加如下内容:
export JAVA_HOME=/usr/share/jdkxxx
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
关闭文件,执行命令source /etc/bash_completion.d/java_env
输入java –version
检查jdk安装是否成功。
2.3 配置hosts,Hosts - The static table lookup for host name(主机名查询静态表)。hosts文件包含了IP地址和主机名之间的映射,还包括主机名的别名。在没有域名服务器的情况下,系统上的所有网络程序都通过查询该文件来解析对应于某个主机名的IP地址,否则就需要使用DNS服务程序来解决。通常可以将常用的域名和IP地址映射加入到hosts文件中,实现快速方便的访问。
IP地址 主机名或者域名 别名
192.168.1.100 liuxd liuxdnode
192.168.1.101 gexb-Lenovo-G470 gexbnode
192.168.1.102 zhswy zhswy
192.168.1.103 yufeng-Vostro-260 yufengnode
2.4 安装SSH server和产生公钥和私钥
2.4.1 安装SSH server,sudo apt-get install openssh-server
,选Y,一路下去,等到安装完成。
2.4.2 切换当前目录为配置hadoop的用户的主目录下,在终端中输入命令:ssh-keygen –t dsa –P ‘’ –f ~/.ssh/id_dsa
。用于数据加密的公钥和私钥就生成了。然后把公钥加入到授信列表中,cat id_dsa.pub >> authorized_keys
。
2.4.3 设置权限,设置存放公钥密钥和授信列表的目录权限,chmod 700 .ssh
。设置授信列表文件的权限,chmod 600 authorized_keys
。
注意:这是linux的安全要求,如果权限不对,自动登录将不会生效。
2.5 配置 hadoop(hadoop主目录下/etc/hadoop/)
2.5.1 JAVA_HOME环境变量配置。hadoop_env.sh和yarn_env.sh都需要配置。
2.5.2 配置slaves
liuxd
zhswy
gexb-Lenovo-G470
2.5.3 配置core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://yufengnode:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
</configuration>
2.5.4 配置hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>yufengnode:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/dizzydocgit/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/dizzydocgit/hadoop/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
2.5.5 配置yarn-site.xml
<configuration>
<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>
<property>
<name>yarn.resourcemanager.address</name>
<value>yufengnode:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>yufengnode:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>yufengnode:8035</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address
<value>yufengnode:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>yufengnode:8088</value>
</property>
</configuration>
2.5.6 配置mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>yufengnode:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>yufengnode:19888</value>
</property>
</configuration>
3. 主从服务器间SSH的配置
3.1 把namenode结点的公钥id_dsa.pub远程拷贝到各个datanode主机的.ssh文件下。用户主文件目录下输
scp –r .ssh/id_dsa.pub dizzydocgit@datanodehost:~/.ssh/namenode_dsa.pub.
拷贝完成。
3.2 把namenode的公钥加入到datanode的授信列`
cat .ssh/namenode_dsa.pub >> .ssh/authorized_keys
上面这个命令的执行可以远程登陆到datanode主机上执行,也可以在datanodede 主机的本地去执行。
3.3 在namenode主机上无密码远程登陆到目标主机。ssh 用户名@datanodehost。如果可以无密码登陆到远程的主机上,则表示ssh配置成功,可以进入下一步了。
4. 单结点上做好的配置作用到其他结点
4.1 确保每一个结点的java环境配置完成,为了不用在每台主机上设置JAVA_HOME环境变量的值,可以将java环境配成一样的,一样的java的版本等。
4.2 添加主机项,在每台主机的/etc/hosts文件末尾加入如下四项:
192.168.1.100 liuxd liuxdnode
192.168.1.101 gexb-Lenovo-G470 gexbnode
192.168.1.102 zhswy zhswy
192.168.1.103 yufeng-Vostro-260 yufengnode
4.3 把已经配置好的单结点的hadoop文件分别拷贝到各个主机。
scp –r ./hadoop dizzydocgit@datanodehost:~/
5. 格式化分布式文件系统,启动hadoop并查看网页控制台(当前目录:hadoop/)
5.1 格式化分布式文
bin/hadoop namenode –format
在二次格式化hadoop的分布式文件系统后,一定要删除各个namenode结点的数据问价,否则datanode进程会突然关闭。
5.2 启动hadoop
Sbin/start-dfs.sh
Sbin/start-yarn.sh
5.3 查看网页控制台
Namenodehost:50070
Namenodehost:8088
6. 关闭hadoop
Sbin/stop-yarn.sh
sbin/stop-dfs.sh