环境和软件版本说明
系统:MacOS
终端:iterms2 + zsh
JDK:1.8.0_211,下载地址,下载jdk-8u211-macosx-x64.dmg
ssh:系统默认
Hadoop:hadoop2.6.0-cdh5.7.0,下载地址,下载hadoop-2.6.0-cdh5.7.0.tar.gz
准备工作
选择一个目录,此处选择用户主目录,建立以下文件夹
mkdir software #建立software文件夹:存放软件安装包
mkdir app #建立app文件夹:软件安装位置
mkdir tmp #建立tmp文件夹:存放临时文件

hadoop 的配置
安装JDK:
双击安装包直接按照提示安装,详细步骤如下图所示
使用dmg安装包安装java 测试是否安装成功
输出java版本 虽然默认已经将Java的路径配置到了系统环境变量中,但由于后续需要使用JAVA_HOME,我们最好将JAVA_HOME显式写入到系统的配置文件中。参考链接:https://segmentfault.com/a/1190000007950960
/usr/libexec/java_home #执行该命令查看Java安装路径
vi ~/.zshrc #修改配置文件,配置JAVA_HOME
source ~/.zshrc #重启配置文件使其生效

其中,~/.zshrc的配置如下所示,只需关注红框内对JAVA_HOME的设置即可。

设置ssh免密码登录
打开ssh
mac系统是自带了ssh的,可以用whereis ssh或者which ssh命令打印安装的路径。但是需要在设置里打开才能够使用:系统偏好设置-->共享—>勾选远程登录,如下图所示
在设置中打开远程登录选项 生成公钥和私钥文件
cd ~/.ssh
ssh-keygen -t rsa #生成秘钥,之后一路回车即可,不需要输入任何内容。我之前已经生成过,所以提示是否overwrite。如果是第一次生成,不会有这个提示。
cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys #将公钥复制到制定文件
cat authorized_keys#查看authorized_keys的文件内容
ssh localhost#测试ssh连接,首次连接需要输入yes,但不需要输入密码,之后不需要输入yes,如果能不输入密码连接,就配置成功了


datanode与namenode之间是需要进行通信的,免密登录是为了不需要手工干预这一过程。
安装Hadoop
解压安装文件
ls ../app#查看解压之前app文件夹下的文件,结果为空
tar -zxvf hadoop-2.6.0-cdh5.7.0.tar.gz -C ~/hadoop/app/#在software文件夹下执行该命令,等待解压完成,即可将hadoop文件夹解压至app文件夹
ls ../app #解压后,查看app文件夹下是否有解压结果


修改配置文件,在hadoop-2.6.0-cdh5.7.0/etc/hadoop文件夹下,需要修改hadoop-env.sh,core-site.xml,hdfs-site.xml三个文件
cd ../app/hadoop-2.6.0-cdh5.7.0/etc/hadoop#切换到目标文件夹下
vi hadoop-env.sh#编辑该文件,并配置JAVA_HOME,配置方法和之前配置JAVA_HOME一致,参见下图


vi core-site.sh#修改core-site.sh,具体配置如下图
vi hdfs-site.sh#修改hdfs-site.sh,具体配置如下图


修改了这三个文件,Hadoop就配置好了。这里需要注意:如果是搭建分布式的集群,还需要配置slaves文件,我们这里忽略。
启动hadoop
配置HADOOP_HOME环境变量
配置HADOOP_HOME 格式化HDFS
cd $HADOOP_HOME/bin#进入hadoop目录下的bin文件夹
./hdfs namenode -format#格式化文件系统,只在第一次启动的时候需要格式化

如果没有报错,就格式化成功了。

启动hadoop
cd $HADOOP_HOME/sbin #进入hadoop目录下的sbin文件夹
./start-dfs.sh#启动HDFS
jps#查看是否有相关进程验证是否启动成功,应该输出如图所示四个进程表示安装成功

还可以在浏览器中输入:http://localhost:50070/,如果可以正常显示,就说明HDFS搭建成功。如下图:

运行集群自带的jar包
cd $HADOP_HOME/share/hadoop/mapreduce# 进入到例子jar包所在目录
hadoop jar hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar pi 10 10# 运行计算P值的例子,传入两个参数,参数值均为10


从图中可以看出,运行结果为3.2。运行结果虽然不太准确,但又一次说明我们的集群已经搭建成功。
关闭集群的方法:
./stop-dfs.sh# 停止DFS文件系统,执行之后,NameNode,DataNode都会关闭,SecondaryNameNode进程都会关闭
jps#查看当前进程,结果只有jps,说明hadoop的集群相关服务已经停止运行

至此,hadoop集群就初步安装完毕。
如果缺少某个进程,通常都是配置文件出错了。具体情况要具体分析,解决方法通常是先修改完配置文件,清空tmp文件夹,之后重新格式化,再启动即可。
几点说明:
我使用的shell是zsh,因此系统配置文件是~/.zshrc,如果是默认的shell,则配置文件是~/.bash_profile
我们暂时没有进行yarn相关的配置,敬请期待后续文章,不影响hdfs的使用。
Linux下的安装流程差不多,主要区别在JDK的安装可以直接解压之后配置环境变量即可。如果要使用虚拟机安装,可能还需要进行一些网络防火墙相关的设置。
Linux下需要安装ssh,centos和Ubuntu的安装方式略有差别,但配置过程和本文几乎一样。
伪分布式对于日常开发调试已经足够,多节点的分布式需要配置多台机器之间的免密码登录。
总结
整个安装和配置的流程如下图所示,供参考。

本文完,如果在操作过程中遇到问题,欢迎交流~后台回复“hadoop”,可获取本文的pdf版本。

以清净心看世界;
用欢喜心过生活。
超哥的杂货铺,你值得拥有~