首先是来说一下这两天来自己的个人感受吧。我争取在第一段将情怀给逼逼完,大家可以无视这一段~~~真心是不容易,第一个感觉就是,乱。为啥呢?先说说我使用Hadoop的原因吧。选了云计算这门课,打算到时候深入研究大数据,也就要好好学咯。第一个学生研究课题是Hadoop环境搭建,据说是从选软件(也就是第一个:CentOs操作系统,第二个:jdk和第三个:Hadoop版本)到配置好环境并且能够测试通所有的东西,一共是花了五天时间(包括制作讲课ppt),前前后后查资料到入坑到看英文的调错也是重装虚拟机四五次。这就是大神,令人膜拜之处~同时也体现了开始入坑的不易,且行且珍惜。
那么好,感觉来看我写的文章,作为一个小白,我也只能将我自己搭建环境中正确的步骤写出来,供大家参考,然后告诉大家走哪些路可能会遇见我无法解决的大麻烦,仅此而已,尚且不能从原理上给大家指点迷津。先说说我搭建的环境要准备的软件——
【VMware workplace 9】个人建议使用8-9左右的版本,从其他地方学习到高版本新增功能相对于普通用户来说还是很少用到的,同时使用高版本会占用更多内存,有时候会得不偿失~
【CentOS镜像文件】在这里我用的是6.XXX,没仔细看~当然,现在的版本已经有7了,大家可以使用新版本,UI相对更漂亮,关系不大。PS我不用新的是我手头上只有这个版本,人又懒,就先用着了
学校hadoop环境配置软件安装地址链接:http://dlab.csu.edu.cn/cloudcomputing2016/
【jdk】这个我就不说啥了吧,大家都明白。去oracle官网上下载,当然,要注意一下使用wget的时候是不是能够下载下来对应软件,我这里提供一下我们学校的下载网址:【JDK下载链接点击这里】
【hadoop】这里非常重要~官方教程少有针对2以上的版本的详细教程,我这里也是安装2以后坑了,一直没能成功。改成1.X后运行成功。个人建议就是如果以学习目的的话,可以先安装低版本,然后学明白了有些经验那么就可以向高版本进发。{提供学校2.X版本下载地址:点击这里}
好的,以上是软件准备,那么接下来我会简单说一下安装的一些步骤。
先唠叨一下我们最后的结果——最后我们将会在自己的windows上开启三台虚拟机,其中的一个作为我们的主节点Master,另外两台作为接入的节点Slave模拟真实的Hadoop环境。
好的,那么首先是将VMware workplace安装在自己的windows或者是Mac上,这个不属于我们的教学范围,so easy的东西啦。然后第二步是在虚拟机上新建一个虚拟机backup,将Centos环境给安装上去,相对来说这次的时间有点久,这也说明了一个问题,如果三台主机都是通过这种方式来安装的话,那么会相当浪费时间的,这个时候虚拟机的价值就体现出来了~Clone(克隆)下边我们用到的时候仔细讲咯。
好的,安装好我们的第一台CentOS后基本上我们可以开始干活了,首先是给它安装一个jdk。
1 使用cp命令,把jdk的压缩包放到/usr目录下面 2 cd /root/Desktop/jdk-8u73-linux-x64.gz /usr/ 3 在/usr目录下面新建java文件夹 4 mkdir java 5 在/usr目录下解压jdk压缩包 6 tar zxvf jdk-8u73-linux-x64.gz 7 将解压得到的文件夹jdk1.8.0_73移动到java文件夹中去 8 mv jdk1.8.0_73 /usr/java
那么注意一下哈,上边所有的Linux命令都要结合你自己的实际情况来弄,这些路径最后都要export到系统环境变量中去,那么如果你改了应该要注意前后对应,同时有些单独电脑特有的变量(比如IP地址),你要根据你自己电脑的实际情况进行配置。同时所有命令如果运行失败,请注意使用的符号是否为中文模式,如果是中文的那么就将它更改为英文模式运行就不会有大问题了(这些都是Linux的基础知识,我也只能给大家讲讲基础知识了,毕竟我只会这个,而且讲的不好,因为我学Linux还不到一个月,哈哈)
好的,下边应该配置jdk的一个环境变量。
配置jdk环境变量,使用vim编辑/etc/profile文件,在末尾加上:
JAVA_HOME=/usr/local/jdk1.8.0_181
JRE_HOME=$JAVA_HOME/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
保存退出后使profile文件立即生效
source /etc/profile
使用命令java –version和javac验证jdk是否安装成功,安装完了jdk之后克隆3个虚拟机,一个master,两个slave
克隆的方法,选中源主机,然后选择VM——》Manage——》Clone,操作挺简单的,相信你会的
如果你要问我第一台虚拟机留着干嘛,那么我告诉你,等你环境配置失败后,又要从头开始的时候,那个backup不会让你一无所有,至少还能从有jdk的地方开始嘛,稍微给你点心理安慰~~~
后边我就要给三台主机取个名字,也就是master,slave1和slave2,要的目的就是使用ssh连接时不会都是一个localhost,只能通过ifconfig来判断。
在master主机上,编辑/etc/sysconfig/network文件,将其中的HOSTNAME设置为master,同理,在两个slave主机上分别设置为datanode1和datanode2,重启才能生效。
重启不一定是必须的,同时每台主机改名的方法是不一样的,具体的可以参考百度
编辑/etc/hosts文件,在其中加入ip地址和对应的主机名,相当于一个DNS解析(这里的ip地址要你自己用ifconfig来查看,要改为自己对应的)
192.168.29.135 master
192.168.29.136 slave1
192.168.29.137 slave2
SSH无密码登录
在master和两个slave节点上都运行命令ssh-keygen -t rsa,三次直接回车,生成ssh公钥和密钥,在slave1主机上执行命令,将公钥复制到master主机上:
scp /root/.ssh/id_rsa.pub root@master:/root/.ssh/id_rsa.pub.slave1
同理在slave2上
scp /root/.ssh/id_rsa.pub root@master:/root/.ssh/id_rsa.pub.slave2
在master主机上,/root/.ssh/目录下,将所有公钥的内容添加到authorized_keys文件中:
cat id_rsa.pub >> authorized_keys
cat id_rsa.pub.datanode1>> authorized_keys
cat id_rsa.pub.datanode2>> authorized_keys
设置master主机的authorized_keys文件的权限为644
chmod 644 /root/.ssh/authorized_keys
将authorized_keys文件复制到两个slave主机上,在master主机上执行命令:
scp ~/.ssh/authorized_keys root@datanode1:/root/.ssh/authorized_keys
scp ~/.ssh/authorized_keys root@datanode2:/root/.ssh/authorized_keys
测试连通性:在所有主机上执行,ssh ip地址,如果都不需要密码,则配置成功。
下边是给安装Hadoop环境:
首先将hadoop的压缩包复制到/usr目录下面:
cp /root/Desktop/hadoop-1.1.2.tar.gz /usr/
接着就是解压hadoop的压缩包
tar zxvf hadoop-1.1.2.tar.gz
将文件夹hadoop-1.1.2重命名为hadoop
mv /usr/hadoop-1.1.2 /usr/hadoop
把hadoop的安装路径添加在/etv/profile文件末尾,之后使用命令source /etc/profile使其生效:
export HADOOP_HOME=/usr/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
编辑/usr/Hadoop/conf/hadoop-env.sh,设置里面的JAVA_HOME
export JAVA_HOME=/usr/java/jdk1.8.0_73
编辑/usr/Hadoop/conf/core-site.xml,在configuration节点中添加内容: <property> <name>hadoop.tmp.dir</name> <value>/usr/hadoop/tmp</value> <description>A base for other temporary directories.</description> </property> <property> <name>fs.default.name</name> <value>hdfs://192.168.29.135:9000</value> </property>
编辑/usr/Hadoop/conf/hdfs-site.xml,在configuration节点中添加内容: <configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
编辑/usr/Hadoop/conf/mapred-site.xml,在configuration节点中添加内容: <configuration> <property> <name>mapred.job.tracker</name> <value>http://192.168.29.135:9001</value> </property> </configuration>
编辑/usr/Hadoop/conf/master,添加master主机的IP地址:
192.68.29.135
编辑/usr/Hadoop/conf/slaves,添加slaves主机的IP地址:
192.168.29.136
192.168.29.137
在master执行命令,将配置好的hadoop文件夹复制到所有的slave主机上:
scp -r /usr/hadoop root@datanode1:/usr/
scp -r /usr/hadoop root@datanode2:/usr/
同理,不要忘了在slave节点上的/etc/profile目录中配置hadoop的环境变量,跟之前master一样:
export HADOOP_HOME=/usr/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
在使用hadoop之前最好将所有机器的防火墙都关掉
service iptables stop chkconfig iptables off
格式化HDFS系统,在master节点上:
hadoop namenode -format
启动hadoop:
start-all.sh
如果你要停止hadoop,使用以下命令:
stop-all.sh
验证hadoop启动成功,在master节点上使用命令jps
验证hadoop启动成功,在slave节点上使用命令jps
验证hadoop启动成功,在master节点上执行命令 hadoop dfsadmin -report:
验证hadoop启动成功,在master节点上访问 192.168.29.135:50070
验证hadoop启动成功,在master节点上访问 192.168.29.135:50070
验证hadoop启动成功,在master节点上访问 192.168.29.135:50030