Hadoop是大数据领域最常用的一种基础架构,很多公司的基础业务都是在这上面展开的,由于公司需要,把一些空置的电脑连接起来跑数据,Hadoop是一种很好的实现方式,网上的教程也多。作为一个原来跑模型的,现在也需要从底层做起。推荐一本Hadoop界的权威书籍:Hadoop权威指南
这是英文版的,写的相当详细,具有很高的参考价值,当然也有相应的中文版,当然首推英文版的。
本文适合按照其他博文的详细步骤安装的时候,因为其中几步错误而安装失败的情况下,在此寻找可能的解决方案。推荐的安装详细步骤教程且亲测成功的是2篇:
https://www.linode.com/docs/databases/hadoop/how-to-install-and-set-up-hadoop-cluster/
https://blog.csdn.net/fanxin_i/article/details/80425461
接下来,介绍下一般的过程步骤:
1. 配置系统,包括linux系统安装,hadoop用户的建立,ssh无密登录设定等等。
2. 安装软件,包括Hadoop和JAVA套件的安装及环境变量的设置。
3. Hadoop的配置和批量分发
4. 初始化和运行HDFS
一、系统配置
1. linux的安装
MAC是一种UNIX的系统架构,操作比较像linux,这里主要说windows到linux。主要有2中方式,一种是运行与windows环境下的虚拟机,另一种是直接双系统下的Linux,这里用的是Ubuntu 18 LTS。下来说说这两种方式,用虚拟机的方式优点在于可以直接操作双系统,但是内存和硬盘占用较大,不能把硬件用的极致。如果用虚拟机方式,按照常规步骤配置,只需要注意一点,吧网络连接模式设置成桥接。如下图:
另一种方式就是双系统了,安装教程网上很多了,这里我用的是Server版,对命令行不熟悉的可以使用Desktop版。附镜像下载地址:https://www.ubuntu.com/download
2. 系统的配置
这里假设有linux基本操作能力,首先要做的一点就是为各个node设置统一的用户名和不同的计算机姓名,这点对之后的SSH无密登录的验证很重要!!!
这是配置自己的计算机名的操作,其中master为本node的hostname,hadoop为用户名,
useradd -m hadoop -G root -s /bin/bash
passwd hadoop (为hadoop用户修改密码)
之后需要为各个node都设置一个hadoop的用户和形如node1,node2...或者slave1,slave2...的hostname
接下来在每个node设置hosts的信息,每行一个地址,IP地址和hostname,中间以Tab键分开。
sudo vi /etc/hosts
3. SSH设置
由于我们需要在linux的安全机制和集群机子之间的便利性做权衡(trade off),利用ssh的公钥登录变成了最佳选择。
首先安装ssh服务,一般会有的,但我下载的ubuntu server版没有,不过这个很方便,输入一行安装命令就可:
sudo apt-get install openssh-server
启动或者重启:sudo service ssh start sudo sshd restart
接下来配置rsa方式生成密钥:
ssh-keygen -t rsa -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
可以登录ssh localhost来测试是否成功。
把master或者叫namenode 的公钥分发的各个节点:
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@node-master
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@node1
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@node2
这里的hadoop指用户名,node-master,node1,node2代表之前编辑过的/etc/hosts文件中的ip地址,192.168.3.66等等
二、安装Hadoop和JAVA
网上下载好java和hadoop之后先解压,
tar -zxvf jdk7.8.0_191
tar -zxvf hadoop-2.7.7
之后用 sudo vi /etc/profile 配置环境变量,之后在vim中输入 :wq! 来保存,请设置成自己的路径!!为了使它立即生效,可以使用source /etc/profile
检验是否安装成功,使用输入 java -version和hadoop命令检验。
三、配置Hadoop
此部分略过,可以参考或者直接复制文章开头提到的2个参考博文。
之后把配置好的master节点的hadoop通过scp或者其他方式分发给各个节点。
四、运行和测试Hadoop
之前都配置好了,但是一般的很难一次成功。先进行HDFS的初始化操作:
hdfs namenode -format
这是一个很好的调试过程,可以根据这步调整之前的配置错误。
初始化成功之后就可以开启hadoop了,这里我用
start-all.sh 和 stop-all.sh 来启动和关闭hadoop系统。可以在各个节点使用jps查看状态。
最后,我们运行一个hadoop自带的MapReduce的例子来测试能否正常跑程序:
hadoop jar ~/hadoop/hadoop-2.7.7/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar pi 10 10
这样子,举一反三,可以扩展到任一台机子了。