简介
-
Hadoop三大发行版本:Apache,Cloudera, Hortonworks
Apache是最原始的版本,对于入门学习最好
Cloudera在大型互联网企业中用的较多
Hortonworks 文档较好 -
Hadoop的优势
- 高可靠性
底层自动实现数据备份,即使一个节点数据丢失,也不会影响整体 - 高拓展性
在集群间分配任务数据,可方便的拓展数以千计的节点 - 高效性
任务处理速度快 - 高容错性
能够自动将失败任务重新分配
- 高可靠性
-
HDFS架构
- NameNode(nn):
存储文件的元数据,比如:文件名,文件属性 - DataNode(dn):
在本地文件体统存储文件的块数据,已经块数据的校验 - SecondaryNameNode(2nn):
用来监测HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照
- NameNode(nn):
官方文档
中文版
http://hadoop.apache.org/docs/r1.0.4/cn/index.html
英文版
https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html
配置
-
下载 hadoop
http://archive.apache.org/dist/hadoop/core/hadoop-2.7.7/
注意:hadoop3 以上版本问题比较多 -
解压Hadoop到/user/local
sudo tar -zxvf hadoop-2.7.7.tar.gz -C /usr/local
把 hadoop-2.7.7 改成hadoop(也可不改)
cd /usr/local sudo mv hadoop-2.7.7 hadoop
-
配置Hadoop环境变量
# sudo gedit /etc/profile # sudo vim /etc/profile sudo vi /etc/profile
在末尾添加下面代码
# set Hadoop environment export HADOOP_HOME=/usr/local/hadoop export PATH=${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH
-
使环境生效:source /etc/profile
-
测试是否配置成功:hadoop version
伪分布式
cd $HADOOP_HOME/etc/hadoop
-
配置core-site.xml
sudo vi core-site.xml # sudo gedit core-site.xml
<configuration> <!-- 指定HDFS中NameNode的地址--> <property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property> <!-- 指定Hadoop运行时临时文件存储目录 --> <property> <name>hadoop.tmp.dir</name> <value>/usr/local/hadoop/data/tmp</value> </property> </configuration>
-
配置hdfs-site.xml
sudo vi hdfs-site.xml # sudo gedit hdfs-site.xml
<configuration> <!-- 指定HDFS副本数量 --> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
-
修改 hadoop-env.sh 文件
# sudo gedit hadoop-env.sh sudo vi hadoop-env.sh # 把 export JAVA_HOME=${JAVA_HOME} 改为 export JAVA_HOME=/usr/local/jdk8
YARN
YARN 对于真正由多台机器构成的集群环境才有意义,伪分布模式下,YARN 无法真正发挥作用。不启动 YARN,MapReduce 程序也能够正常运行。
-
配置 mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
-
配置 yarn-site.xml
<configuration> <!-- Site specific YARN configuration properties --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>
格式化文件系统
cd $HADOOP_HOME
./bin/hdfs namenode -format
启动NameNode守护进程和DataNode守护进程:
sbin/start-dfs.sh
这里要输入 3 次密码
配置 ssh 免密登录
# 生成公钥和密钥
ssh-keygen -t rsa # 执行该命令后,遇到提示信息,一直按 Enter 键就可以了
cd ~/.ssh
cat ./id_rsa.pub >> ./authorized_keys # 将公钥赋予给authorized_keys
sudo chmod 644 authorized_keys # 修改权限
注意:如果之前已经生成过公钥,必须删除原来生成的公钥
cd ~/.ssh # 如果没有该目录,先执行一次 ssh localhost
rm ./id_rsa* # 删除之前生成的公钥(如果已经存在)
配置完之后启动集群就不用密码了
jps # jps是jdk提供的一个查看当前java进程的小工具
如果没有 NameNode,进行格式化文件就可以了
监控集群
在浏览器里输入 http://虚拟机ip地址:50070 查看 NameNode
- Overview 记录了 NameNode 的启动时间、版本号、编译版本等一些基本信息
- Summary 是集群信息,提供了当前集群环境的一些有用信息
- NameNoode Storage 提供了 NameNode 的信息,最后的 State 标示此节点为活动节点,可正常提供服务
错误
-
安装 ssh 就可以了sudo apt-get update # 更新软件列表 sudo apt-get install openssh-server