链接:https://pan.baidu.com/s/1LtUiMZX4W0rwsLKTin6Fuw
提取码:fud1
复制这段内容后打开百度网盘手机App,操作更方便哦
一,关于hadoop
1.hadoop来源
hadoop的思想起源于google,google对于大量网页的存储:利用冗余储存方法应对节点失效时数据的挽回,page-rank网页价值计算方法,分散计算任务,
2.关于各个进程
1),namenode
hdfs守护进程,
记录文件是如何分割成数据块的,以及数据块存在哪些节点上,
对内存和I/O进行集中管理,
是单点发生故障将使集群崩溃
2),secondary namenode (辅助namenode)
监控HDFS状态的辅助后台程序,
每个集群都有一个,
与NameNode进行通讯,定期保存HDFS元数据快照,
当NameNode故障可以作为备用NameNode使用
3),Datanode
每台从服务器都运行一个,
负责把HDFS数据块读写到本地文件系统
4),jobtracker
用于处理作业(用户提交代码)的后台程序,
决定有哪些文件参与处理,然后切割task并分配节点,
监控task,重启失败的task(于不同的节点),
每个集群只有唯一一个JobTracker,位于Master节点
5),tasktracker
位于slave节点上,与datanode结合(代码与数据一起的原则),
管理各自节点上的task(由jobtracker分配)
每个节点只有一个tasktracker,但一个tasktracker可以启动多个jvm,用于并行执行map或者reduce任务
与jobtracker交互
3,edits,fsimage合并过程

二,hadoop集群安装
1.关闭防火墙
# 关闭 “系统防火墙” 命令
systemctl stop firewalld.service
# 关闭 “系统防火墙” 自启动命令
systemctl disable firewalld.service
2.关闭selinux
# 关闭 “SELinux”命令
setenforce 0
# 关闭“SELinux”系统系统自启动服务
vi /etc/selinux/config
# 修改内容
SELINUX=disabled
3.配置静态ip
4.修改主机名
hostnamectl set-hostname master #centos7
5.添加hadoop用户并配置权限和group
adduser hadoop
passwd hadoop
#输入两次密码
#将新建的hadoop用户添加到hadoop用户组
usermod -a -G hadoop hadoop
cat /etc/group
#赋予root权限
vim /etc/sudoers
hadoop ALL=(ALL) ALL
6.修改hosts,环境变量,
配置ssh免密登录
ssh-keygen -t rsa
#然后将所有主机的公钥写到一个文件里(authorized_keys),然后给每台主机复制一份到~/.ssh/目录下
7.修改配置文件

配置hadoop-env.sh(hadoop的一些环境变量配置)
export JAVA_HOME=/usr/local/java/ #jdk目录
配置yarn-env.sh
# export JAVA_HOME=/home/y/libexec/jdk1.6.0/
if [ "$JAVA_HOME" != "" ]; then
#echo "run java in $JAVA_HOME"
JAVA_HOME=/usr/local/java/ #jdk目录
fi
配置core-site.xml(hadoop的核心配置)
<configuration>
<property>
<!-- NameNode的IP地址和端口 -->
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<!-- 制定hadoop的temp文件夹地址 -->
<name>hadoop.tmp.dir</name>
<value>file:/opt/hadoop/temp/</value>
</property>
</configuration>
配置hdfs-site.xml(hdfs 的核心配置)
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/opt/hadoop/dfs/name/</value>
</property>
<property>
<name>dfs.namenode.data.dir</name>
<value>file:/opt/hadoop/dfs/data/</value>
</property>
<property>
<!-- 文件备份数量(份) -->
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
配置mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
配置yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<!-- 客户端地址,向 resouce 请求地址 -->
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<!-- 调入器调入地址 -->
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<!-- notemanager 汇报心跳等任务 -->
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<!-- 管理员地址,可发送管理命令等操作 -->
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<!-- 通过浏览器看到 hadoop 情况 -->
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
</configuration>
配置slaves文件,删除localhost
slave1
slave2
8.复制hadoop到其他节点
scp -r /opt/hadoop/ slave:/opt/
9.运行hadoop
先格式化namenode
hdfs namenode -format
启动
start-all.sh
验证
hadoop jar /opt/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.5.jar pi 10 10
10.dfs命令
参考:http://hadoop.apache.org/docs/r2.7.5/hadoop-project-dist/hadoop-common/FileSystemShell.html
三,Hadoop,HA搭建

1.安装配置zookeeper
1)解压zookeeper-3.4.12.tar.gz并重命名文件夹zookeeper
2)新增配置文件
vim zookeeper/conf/zoo.cfg
tickTime=2000
dataDir=/opt/zookeeper/tmp
clientPort=2181
initLimit=5
syncLimit=2
server.1=slave1:2888:3888
server.2=slave2:2888:3888
server.3=slave3:2888:3888
3) 分别在slave1,slave2,slave3上创建zookeeper/tmp/myid
* #具体数字和zoo.cfg中的server.*对应
4)配置和环境变量
5)启动zookeeper
zkServer.sh start
1.修改hdfs-site.xml
<configuration>
<!--
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
-->
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/opt/hadoop/dfs/name/</value>
</property>
<property>
<name>dfs.namenode.data.dir</name>
<value>file:/opt/hadoop/dfs/data/</value>
</property>
<property>
<!-- 文件备份数量(份) -->
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<!-- HA -->
<property>
<name>dfs.nameservices</name>
<!-- 名字自定义,不过后面的名字也要一致 -->
<value>adam</value>
</property>
<property>
<!-- 注意dfs.ha.namenodes.* 这个*要和上面那个保持一致 -->
<name>dfs.ha.namenodes.adam</name>
<!-- 名字自定义,不过后面的名字也要一致 -->
<value>nn1,nn2</value>
</property>
<!-- 注意name属性 -->
<property>
<name>dfs.namenode.rpc-address.adam.nn1</name>
<value>master:9000</value>
</property>
<property>
<name>dfs.namenode.rpc-address.adam.nn2</name>
<value>slave1:9000</value>
</property>
<property>
<name>dfs.namenode.http-address.adam.nn2</name>