从零搭建Hadoop集群

上周上了一周东方瑞通的杜威老师的大数据培训课程,受益良多,杜老师将现在流行的大数据的架构完整的展现了出来,并带着我们一步一步的使用了各种大数据的工具。课程中使用的工具大多是杜老师已经配置好的,不自己再倒腾倒腾估计一周后就忘记了,干脆重新搞了个虚拟机从头搭建一遍玩一下,倒腾了两个晚上,才刚刚把Hadoop的环境跑通,还有HBase, Hive,Spark。。。还有大数据的算法。。。路漫漫其修远兮啊。。。不废话了,开搞。

工具准备

VMware,这个自己搜吧,我用的是VMware® Workstation 12 Pro ,你懂的。

Linux映像,Ubuntu的16.04的server版本。

装虚拟机就不需要我多说了,先装好一个,起个拽一点的名字叫 bigdata-master,然后拷贝两个副本分别叫bigdata-slave1和bigdata-slave2。

图形界面,我是随便百度了一下,敲了下面三个命令行装了Kubuntu,然后发现这个界面跟我平时用的界面差异太大了,不过实在懒得换了,反正我是强烈建议换一个玩玩:

sudo apt-get install xinit
sudo apt-get install gdm
sudo apt-get install kubuntu-desktop

安装更新VMware tools, 参考CSDN的这个链接.

安装ssh:

sudo apt-get install openssh-client
sudo apt-get install openssh-server
sudo /etc/init.d/ssh restart 

修改IP地址,参考CSDN的这个链接,我的/etc/network/interfaces文件修改后是这个样子的,供参考(图里的dns-nameservers可以查看PC的网络连接的DNS地址,或者写成与gateway相同的:192.168.245.2):
从零搭建Hadoop集群_第1张图片

修改/etc/hosts中的hostname,注意IP地址和hostname要对应:
从零搭建Hadoop集群_第2张图片

设置JAVA_HOME,如果跟我下载的是一个iso的话,直接在三个机器上都敲一遍:

sudo echo export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-amd64" >> ~/.bashrc

安装JPS

sudo apt install openjdk-8-jdk-headless

好了,至此环境准备完成,不管三七二十一,将三个node全部重启一遍再说>_<。重启后应该在三个虚拟机里都能互相ping到对方,并且能查到java的安装路径。

echo $JAVA_HOME

安装到这里安装Hadoop的环境已经OK了,有兴趣的话可以继续配置SSH互信,这样后面可以少输入很多密码。另外下面使用的不是root账户来配置的,因为我倒腾了半天也没搞定Kubuntu的root账户直接登录,能用就行了,不过后面有个小坑。。。。>_<

安装Hadoop

先去http://hadoop.apache.org/下载一个stable的版本,我下载的是2.7.3,老师课堂上用的是2.6.0!!!不知道后面有没有坑会踩到>_<

拷贝到bigdata-master的~/hadoop目录下,解压

tar xzfv hadoop-2.7.3.tar.gz

进到/hadoop-2.7.3/etc/hadoop/,里面有几个配置文件需要更新
配置文件hadoop-env.sh
这个文件里配置hadoop使用的jdk,更新JAVA_HOME如下:
hadoop-env.sh

配置文件core-site.xml
不多说啥含义了,自行百度吧,因为我也说不清,照着配置就Okay啦:
从零搭建Hadoop集群_第3张图片

配置文件hdfs-site.xml
从零搭建Hadoop集群_第4张图片

配置文件mapred-site.xml
这个目录下没有mapred-site.xml,但是有一个mapred-site.xml.template,直接拷贝一份,改个名即可,然后进去更新下主机的名字,如下:
从零搭建Hadoop集群_第5张图片

配置文件masters
好像这个目录下没这个文件,直接创建一个masters,里面内容如下:
masters

配置文件slaves
slaves

这个时候,master上的Hadoop已经配置完啦,是不是超简单!!!

下面将hadoop完整的目录整个拷贝到bigdata-slave1和bigdata-slave2上,如果你之前配置了SSH互信,这里就不需要输入密码啦~~不然就多敲几个字母吧,示意一下如下:
注意master和slave上hadoop的目录最好一致,不然你需要去修改上面配置文件里的各种乱七八糟的目录,懒人的最好办法就是保持master和slave的文件目录都在同一个目录下 ^_^:

scp -r 源目录 root@bigdata-slave1:目标目录

启动Hadoop集群

下面的所有操作都是在bigdata-master下操作的。
先用su切换到root账户下(不能切换的自行百度下吧,设置下root的密码即可)。
进入/hadoop-2.7.3/bin/,执行下面的命令行来格式化hdfs:

./hdfs namenode -format

进入/hadoop-2.7.3/sbin/,执行下面的命令行来启动集群:

./start-dfs.sh

一大堆打印,中间要你敲一堆密码,如果你配置了SSH互信,这边就简单多啦,中间打印停了不要随便敲回车,先输入一遍root密码再敲,不然可能就错过了某步。。。。。。
打印结束了,Hadoop集群就应该已经启动成功了,其中bigdata-master上JPS的显示应该如下:
mnode
两个slave的机器的JPS显示如下:
snode

注意,如果你不是用的root账户,这里JPS会什么都不显示, >_<, su一下切换到root下,就能JPS看到Hadoop的Node了。

也可以在bigdata-master的浏览器中输入:

bigdata-master:50070/

浏览器会自动跳转到hadoop集群的管理页面:
从零搭建Hadoop集群_第6张图片

WordCount

光搭好环境没用,还是得搞个例子跑一下试试,就用大家都喜欢用的wordcount。
先随便下一个英文的txt文件,我知道你们懒,随便分享一个哈利波特

切换到/hadoop-2.7.3/bin/目录下(如果配置了环境变量就不用了,我懒。。。),先创建一个hadoop的hdfs文件夹用作输入:

./hadoop fs -mkdir /mytest

查看一下,里面空空如也:

./hadoop fs -ls /mytest

将需要做wordcount的txt文件put到hdfs目录下(-put第一个参数是源文件,第二个是目标,注意这里有个小坑,文件名不能带特殊字符,否者会报put: unexpected URISyntaxException,空格也算):

./hadoop fs -put ~/harrypotter5.txt /mytest

再ls下就可以看到文件被传上去了。

下面的命令行就可以利用hadoop自带的jar包来做分词了,注意/mytestoutput不能存在,不然会报错!!!!!

./hadoop jar /home/***/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /mytest /mytestoutput

等一大段输出结束后,没有报java的错误的话就是分词结束啦,在bigdata-master的浏览器中输入:

bigdata-master:50070/

点击 Utilities,就能看到mytestoutput目录下面的文件了,download下来就是分词的结果啦。
从零搭建Hadoop集群_第7张图片

总结

没有。。。。想了解原理还是去听杜老师的课吧,或者自行百度~~~~~~~>_<~~~~~~

你可能感兴趣的:(大数据入门)