注:本文的主要目的是为了记录自己的学习过程,方便与大家做交流。转载请注明出处http://blog.csdn.net/kokjuis/article/details/59523427
最近在搭建文件系统,用的是hadoop2.7.3,在Linux下做了集群。在这里做个记录,方便自己以后查看,同时希望对大家有一些帮助。
先介绍一下我目前使用的集群环境。我这里用的是虚拟环境。先介绍下硬件条件和系统环境吧。
CPU:Inter Core I7-6700 3.4Ghz 四核心八线程
内存 :16G
硬盘 :128G ssd+1T hdd
系统 :win10
总的来说,我现在这台机子的性能是相当不错的。运行3个虚拟机还是很轻松的。
一、安装hadoop之前准备的条件:
1、安装虚拟机环境
因为我这里是用虚拟机模拟集群环境的,所以要安装个虚拟机。我这里用的是 Oracle VM VirtualBox。你也可以用Vmware WorkStation,我用VirtualBox相对体积小巧,更加简易一点,Vmware WorkStation功能丰富点,不过都没有问题的,都能满足需要。至于怎么安装就不多说了,跟普通软件一样,直接下载下来安装就可以了。
2、在虚拟机上安装Linux系统。
hadoop一般是运行在Linux平台之上的,也可以运行在windows下,但是在linux上实施比较稳定,不易出错,在windows安装hadoop集群会相对麻烦一些。我这里用虚拟机安装的系统是 ubantu 16.04 LTS ,ubantu的桌面操作舒服一些,你可以用centos, redhat, fedora这些版本的Linux系统,都没有问题的。这里就简单说一下怎么安装,具体也可以百度上搜一下,有很多。安装过程很简单。需要照这步骤创建3个虚拟系统
点新建
会弹出一个选项,选择Linux系统 ubantu 64位,自己先下载好64位版本的ubantu安装包。内存可以自己设置,内存多的可以设置大一点,少的可以设置小一点,这个以后也可以改的。然后选择现在创建虚拟硬盘。
选择虚拟硬盘放在哪个路径,分配大小,这里的虚拟硬盘就是你虚拟系统里面的硬盘大小,然后选VDI类型,固定大小,点创建。
创建完以后就会出来一个虚拟机了,此时还没有系统,还需要为虚拟机安装Ubantu系统。
先做一些设置,其实也不用怎么设置了,主要把显存放到最大,这样流畅一点,最后是添加一个IDE光驱,选择下载好的ubantu系统文件安装就可以了。很简单。
这里需要注意的是要把网络连接方式设置成桥接网卡,这样是最接近真实网络环境的,如果用NAT的话,是无法做到集群的。因为NAT网络只能访问外部,外部不能访问虚拟机,所以不行。
二、集群规划
主机名
ip
安装的软件
进程
master
192.168.10.184
jdk1.7.0_79、hadoop 2.3.7
namenode ressourcemanager
slave1
192.168.10.185
jdk1.7.0_79、hadoop 2.3.7
datanode secondnamenode
slave2
192.168.10.186
jdk1.7.0_79、hadoop 2.3.7
datanade
1、配置ubantu网络。
先将ubantu网络设置成静态IP。
2、取消dash。
在终端输入命令:sudo dpkg-reconfigure dash 在选择项中选No。
因为Ubuntu/Debian为了加快开机速度,用dash代替了传统的bash,如果不关闭。启动时hadoop时会报“Syntax error: “(” unexpected”错误。
3、修改/etc/hosts 文件
终端输入命令 sudo gedit /etc/hosts
配置好各个节点的信息,前面是节点的ip。后面是节点的名称,名称就是你的主机名称。
注意:每个节点都做上面的步骤。
三、安装JDK
下载jdk1.7.0_79。其他版本也没有问题。然后解压到 /opt/ 目录下。配置好环境变量
# 修改配置文件,在终端输入 sudo gedit /etc/profile
# 在最后下添加
export JAVA_HOME=/opt/jdk1.7.0_79
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
# 刷新配置文件source /etc/profile
即为hadoop集群专门设置一个用户组及用户,这部分比较简单,参考示例如下:
sudo groupadd hadoop //设置hadoop用户组
sudo useradd –s /bin/bash –d /home/had –m had –g hadoop –G admin //添加一个had用户,此用户属于hadoop用户组,且具有admin权限。
sudo passwd 123456 //设置用户had登录密码
su had//切换到had用户中
如果没有 admin组,可以自己添加一个 sudo groupadd admin
上述3个虚机结点均需要进行以上步骤来完成hadoop运行帐号的建立。
1、注意将防火墙关掉:
#关闭防火墙
sudo systemctl stop firewalld.service
#关闭开机启动
sudo systemctl disable firewalld.service
2、免密码登录:
SSH主要通过RSA算法来产生公钥与私钥,在数据传输过程中对数据进行加密来保障数
据的安全性和可靠性,公钥部分是公共部分,网络上任一结点均可以访问,私钥主要用于对数据进行加密,以防他人盗取数据。总而言之,这是一种非对称算法,想要破解还是非常有难度的。Hadoop集群的各个结点之间需要进行数据的访问,被访问的结点对于访问用户结点的可靠性必须进行验证,hadoop采用的是ssh的方法通过密钥验证及数据加解密的方式进行远程安全登录操作,当然,如果hadoop对每个结点的访问均需要进行验证,其效率将会大大降低,所以才需要配置SSH免密码的方法直接远程连入被访问结点,这样将大大提高访问效率。
cd ~/.ssh
ssh-keygen -t rsa
这里上个回车就ok,会在当前目录生成两个文件,一个公钥一个私钥
将公钥拷贝到其它机器上,实现免密码登录
ssh-copy-id 192.168.10.184
ssh-copy-id 192.168.10.185
ssh-copy-id 192.168.10.186
这样会在slave1 的~/.ssh/目录下生成一个authorized_keys 就可以实现master免登录到slave1,如下:
ssh 192.168.10.185
在单机结点上用ssh进行登录,看能否登录成功。能登录成功后注销退出,过程如下:
如果出现 ssh: connect to host localhost port 22: Connection refused 这个问题,解决方法如下:
错误原因:
1.sshd 未安装
2.sshd 未启动
3.防火墙
4需重新启动ssh 服务
若成功,则表示安装成功,且连接通过;
1、解压下载好的hadoop安装包到 /home/had/ 目录下
hadoop-env.sh
core-site.xml
<configuration>
<property>
<name>fs.defaultFSname>
<value>hdfs://192.168.10.184:9000value>
property>
<property>
<name>hadoop.tmp.dirname>
<value>/home/had/hadoop-2.7.3/tmpvalue>
property>
configuration>
hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.http-addressname>
<value>192.168.10.184:50070value>
property>
<property>
<name>dfs.namenode.secondary.http-addressname>
<value>192.168.10.185:50090value>
property>
<property>
<name>dfs.namenode.name.dirname>
<value>/home/had/hadoop-2.7.3/data/namenodevalue>
property>
<property>
<name>dfs.replicationname>
<value>2value>
property>
<property>
<name>dfs.datanode.data.dirname>
<value>/home/had/hadoop-2.7.3/data/datanodevalue>
property>
configuration>
mapred-site.xml
必须先创建mapred-site.xml,因为目录下并没有mapred-site.xml ,手动创建也可以,用下面的命令也可以。
mv mapred-site.xml.template mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.namename>
<value>yarnvalue>
property>
configuration>
yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostnamename>
<value>mastervalue>
property>
<property>
<name>yarn.nodemanager.aux-servicesname>
<value>mapreduce_shufflevalue>
property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.classname>
<value>org.apache.hadoop.mapred.ShuffleHandlervalue>
property>
configuration>
masters
新建一个masters的文件,这里指定的是secondary namenode 的主机
192.168.10.185
slaves
192.168.10.185
192.168.10.186
2、第一次得格式化
./bin/hdfs namenode -format
3、然后复制hadoop到其他主机
scp -r hadoop-2.7.3 192.168.10.185:~
scp -r hadoop-2.7.3192.168.10.186:~
通过上面的命令,其他节点也都安装好了hadoop。不用每个节点都手动安装
1、启动dfs
./sbin/start-dfs.sh
2、启动yarn
./sbin/start-yarn.sh
在终端输入命令 jps 查看进程。
master
slave1
slave2
4、通过浏览器测试hdfs:
192.168.10.184:50070
注意这里有数据才是成功。
5、通过浏览器测试yarn:
192.168.10.184:8088
可以看到一切正常。2个节点。