1)Apache Hadoop
官网:http://hadoop.apache.org/
最原始的版本,所有发行版均基于这个版本进行改进,不推荐使用,不稳定且有版本冲突等问题。
2)Cloudera Hadoop(Cloudera’s Distribution Including Apache Hadoop,简称:CDH)
3)Hortonworks Hadoop(Hortonworks Data Platform,简称:HDP)
两家大数据先驱Cloudera和Hortonworks公司合并后推出了新的统一的大数据平台CDP,但CDH和HDP仍可以到它们的官网去下载。
其中CDH还可以通过以下链接下载:
CDH5:http://archive.cloudera.com/cdh5/cdh/5/
CDH6:https://archive.cloudera.com/cdh6/
三者比较:
Apache Hadoop | CDH | HDP | |
---|---|---|---|
管理工具 | 手动 | Cloudera Manager | Ambari |
收费情况 | 开源 | 社区版免费,企业版收费 | 免费 |
两家大数据先驱Cloudera和Hortonworks于2018年10月宣布了双方称之为相对平等的合并,表示要创建世界领先数据平台。正式合并完成后Cloudera推出了新的统一的大数据平台CDP(Cloudera Data Platform),它也是Cloudera新兴的“企业数据云”战略的核心。同时宣布的还有他们将继续支持现有的CDH和HDP平台一直到2022年,同时在这3年对现有的产品还会进行交叉组合。-- 引自
由于Hadoop由Java编写,所以需要Java环境支持。
Hadoop集群主从节点通信每次都要登录操作,这样肯定是不行的,所以要配置ssh无密码登录。
本文使用的Hadoop版本为hadoop-2.6.0-cdh5.15.1
。如需要其它Hadoop生态的软件记得也要使用对应后缀的版本,例:hive-1.1.0-cdh5.15.1
。
CDH相关软件包下载地址:http://archive.cloudera.com/cdh5/cdh/5/
Linux Hadoop下载命令:
wget http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.15.1.tar.gz
本地下载下来后再传到服务器端,但不建议,冗余的操作。一般用于命令行下载慢的情况使用。
下载地址搜索hadoop-2.6.0-cdh5.15.1
可以找到tar.gz
安装包和文档:
Hadoop对应版本的文档:
tar -zxvf hadoop-2.6.0-cdh5.15.1.tar.gz -C /usr/softinstall
Hadoop软件包常见目录说明:
bin
:hadoop客户端名单
etc/hadoop
:hadoop相关的配置文件存放目录
sbin
:启动hadoop相关进程的脚本
share
:常用例子
本文根据官方文档中General --> Single Node Setup的说明来进行配置
如需对所有用户生效则配置在/etc/profile
中:
vim /etc/profile
如仅需对当前用户生效则配置在~/.bash_profile
中:
vim ~/.bash_profile
配置环境变量:
export HADOOP_HOME=/usr/softinstall/hadoop-2.6.0-cdh5.15.1
export PATH=$PATH:$HADOOP_HOME/bin
修改后需要source一下配置文件:
source /etc/profile
source ~/.bash_profile
说明:配置在
/etc/profile
或~/.bash_profile
中看自身需要二选一即可。
cd $HADOOP_HOME/etc/hadoop
vim hadoop-env.sh
修改JAVA_HOME为具体路径而不是默认的环境变量,这样是为了防止系统中java没有配置环境变量,或者环境变量对应的版本不是想要的:
# The java implementation to use.
# export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/usr/softinstall/jdk1.8.0_231
配置节点的IP地址和端口号:
vim core-site.xml
fs.defaultFS</name>
hdfs://lee000:8020</value>
</property>
</configuration>
Hadoop默认3个节点,而现在实际上只有1个节点,所以要调整该副本系数为1(大家可以根据自身需求进行配置):
vim hdfs-site.xml
dfs.replication</name>
1</value>
</property>
hadoop.tmp.dir</name>
/home/jimmy/install/hadoop_tmp</value>
</property>
</configuration>
hadoop.tmp.dir 是 hadoop文件系统依赖的基本配置,很多配置路径都依赖它,它的默认位置在/tmp/{$user}下面,而LINUX 系统,在重启后,/tmp 下的目录被清空。所以在core-site.xml中需要配置 hadoop.tmp.dir 路径到持久化目录,不然每次重启后数据都被清空了。
从节点DateNode默认是在localhost上运行,但现在单机测试,全配置到本地lee000主机上,所以localhost改成lee000(大家可以按需修改):
vim slaves
lee000
注意:第一次启动的时候一定定要格式化文件系统(hadoop.tmp.dir),但不要重复执行
cd $HADOOP_HOME/bin
执行格式化:
hdfs namenode -format
格式化成功后可以在配置的hadoop.tmp.dir
文件夹中找到dfs相关缓文件:
[root@lee000 bin]# cd /home/jimmy/install/hadoop_tmp
[root@lee000 hadoop_tmp]# ls
dfs
cd $HADOOP_HOME/sbin
./start-dfs.sh
jps
命令验证,有如下3个进程就代表集群启动成功:
[root@lee000 hadoop_tmp]# jps
59472 SecondaryNameNode
19138 Jps
59181 NameNode
59310 DataNode
如果启动失败,则应该去
$HADOOP_HOME/logs
目录查看日志,哪个进程没启动成功就查哪个
./stop-dfs.sh
可以到官方文档中的General --> FileSystem Shell 中找到对应的Hadoop版本自行查阅。
例如:http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.15.1/hadoop-project-dist/hadoop-common/FileSystemShell.html
注意:如果发现jps验证进程是好的,但浏览器访问服务器(http://192.168.0.100:50070/)打不开,十有八九是防火墙问题。
查看防火墙状态:
sudo firewall-cmd --state
关闭防火墙:
sudo systemctl stop firewalld.service
参考:https://blog.csdn.net/yuxielea/article/details/100653903
可以通过以下命令只启动NameNode和DataNode,而不启动SecondaryNameNode:
./hadoop-daemons.sh start namenode
./hadoop-daemons.sh start datanode
start/stop-dfs.sh与hadoop-daemons.sh的关系:
start-dfs.sh=
./hadoop-daemons.sh start namenode
./hadoop-daemons.sh start datanode
./hadoop-daemons.sh start secondarynamenode
stop-dfs.sh=
./hadoop-daemons.sh stop namenode
./hadoop-daemons.sh stop datanode
./hadoop-daemons.sh stop secondarynamenode