hadoop集群搭建
- 环境 centos6.7
- 虚拟机三台 yh01(主节点) yh02 yh03 一下如无特殊说明都是在主节点上配置
1.下载
http://mirrors.hust.edu.cn/ap...
2.安装
2.1 参考文档
-
文档 http://hadoop.apache.org/docs/
- 自行选择版本安装 本文按3.1.1示例
- 版本 http://hadoop.apache.org/rele...
- 3.1.1的配置参考文档 http://hadoop.apache.org/docs...
2.2 解压
- 上传hadoop-3.1.1.tar.gz到centos6.7系统中 解压
2.3 配置
- 配置文件位置 /export/servers/hadoop-3.1.1/etc/hadoop/
- hadoop-env.sh 27
#jdk 环境 因为要远程调用 ${java_home}找不到变量 export JAVA_HOME=/export/servers/jdk1.8.0_141
-
core-site.xml
<configuration> <property> #hadoop使用的文件系统(uri) hdfs 和hdfs的位置 <name>fs.defaultFS</name> <value>hdfs://yh01:9000</value> </property> <property> #hadoop运行时产生的文件的存储位置 <name>hadoop.tmp.dir</name> <value>/export/data/HADOOP/apps/hadoop-3.1.1/tmp</value> </property> </configuration>
- hdfs-site.xml 都有默认值 也可以不配置
<configuration> ---------------- <property> #namenode上存储hdfs名字空间元数据 <name>dfs.namenode.name.dir</name> <value>/export/data/HADOOP/hdfs/name</value> </property> <property> #hdfs datanode上数据块的物理存储位置 <name>dfs.datanode.data.dir</name> <value>/export/data/HADOOP/hdfs/data</value> </property> <property> #hdfs数据副本数量 3分副本 应小于datanode机器数量 <name>dfs.replication</name> <value>3</value> </property> ---------------- <property> <name>dfs.secondary.http.address</name> <value>yh01:50090</value> </property> </configuration>
- mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> #mr运行的平台 默认local本地模式 <value>yarn</value> </property> </configuration>
- yarn-site.xml
<configuration> <property> <name>yarn.resourcemanager.hostname</name> #yarn (MR)的ResourcesManager管理界面的地址 主机名称 <value>yh01</value> </property> <property> #reducer获取数据的方式 <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>
- 添加hdfs权限 vim sbin/start-dfs.sh sbin/stop-dfs.sh 在顶部空白位置添加
-
HDFS_DATANODE_USER=root HDFS_DATANODE_SECURE_USER=hdfs HDFS_NAMENODE_USER=root HDFS_SECONDARYNAMENODE_USER=root
- 否则会报错 (缺少用户权限定义造成的)因此编辑启动和关闭
ERROR: Attempting to launch hdfs namenode as root ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting launch. Starting datanodes ERROR: Attempting to launch hdfs datanode as root ERROR: but there is no HDFS_DATANODE_USER defined. Aborting launch. Starting secondary namenodes [localhost.localdomain] ERROR: Attempting to launch hdfs secondarynamenode as root ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting launch.
- 添加yarn权限 vim sbin/start-yarn.sh sbin/stop-yarn.sh
YARN_RESOURCEMANAGER_USER=root HDFS_DATANODE_SECURE_USER=yarn YARN_NODEMANAGER_USER=root
2.4 添加环境变量
- vim /etc/profile
export JAVA_HOME=/export/servers/jdk1.8.0_141 export PATH=$PATH:$JAVA_HOME/bin #hadoop export HADOOP_HOME=/export/servers/hadoop-3.1.1 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
- source /etc/profile
- 临时简单验证下有没有问题
[root@yh01]# cd $HADOOP_HOME [root@yh01 hadoop-3.1.1]# bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.1.jar grep input output 'dfs[a-z.]+'
- 修改ssh (yh01 yh02 yh03 都需要执行ssh-keygen以下的命令)
现在检查您是否可以在没有密码的情况下ssh到localhost: ssh yh01 如果在没有密码短语的情况下无法ssh到localhost,请执行以下命令: ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys chmod 0600 ~/.ssh/authorized_keys 添加本机ssh到本机ssh中 当使用start-all.sh启动works下的所有机器时能直接无秘钥启动 同时分发yh01主机的秘密到其他机器中 ~/.ssh/authorized_keys 包含 当前机器 及主节点机器的秘钥
- 修改/etc/ssh/sshd_config 文件
需要修改的 如果有注释 就发开注释 RSAAuthentication yes PubkeyAuthentication yes #这两项为打开公钥模式 AuthorizedKeysFile .ssh/authorized_keys #配置公钥记录文件 PasswordAuthentication yes #打开密码验证模式
2.4.1 分发hadoop文件
- 分发$HADOOP_HOME的文件到其他机器
[root@yh01 hadoop-3.1.1]# pwd
/export/servers/hadoop-3.1.1
[root@yh01 hadoop-3.1.1]# scp -r hadoop-3.1.1/ root@yh02:$PWD
[root@yh01 hadoop-3.1.1]# scp -r hadoop-3.1.1/ root@yh03:$PWD
-
修改works文件 文件中的所有工作者主机名或IP地址,每行一个
添加hadoop节点 vim hadoop-3.1.1/etc/hadoop/works 假设有3台 yh01 yh02 yh03 要添加本机ssh链接 ssh yh01
3 启动
3.1 先格式化HDFS 启动HDFS 然后启动yarn
如果配置了workds文件
只需要在yh01上执行即可 分割线一下的可以忽略
hdfs namenode -format
启动
$HADOOP_HOME/sbin/start-dfs.sh
$HADOOP_HOME/sbin/start-yarn.sh
$HADOOP_HOME/bin/mapred --daemon start historyserver
关闭
$HADOOP_HOME/sbin/stop-dfs.sh
$HADOOP_HOME/sbin/stop-yarn.sh
$HADOOP_HOME/bin/mapred --daemon stop historyserver
===========================
在主节点 yh01上执行
$HADOOP_HOME/bin/hdfs --daemon start namenode
在副节点 yh02 yh03上执行
$HADOOP_HOME/bin/hdfs --daemon start datanode
#格式化成功
2018-08-24 16:41:04,983 INFO common.Storage: Storage directory /export/data/HADOOP/data/name has been successfully formatted.
3.2 批量操作
启动所有
start-all.sh
关闭所有
stop-all.sh
3.3 验证
[root@yh01 logs]# jps
5633 Jps
4498 ResourceManager
4020 DataNode
5556 JobHistoryServer
3879 NameNode
4247 SecondaryNameNode
4635 NodeManager
[root@yh02 hadoop-3.1.1]# jps
5856 Jps
3969 Bootstrap
5345 NodeManager
5235 DataNode
3919 QuorumPeerMain
[root@yh03 hadoop-3.1.1]# jps
3729 QuorumPeerMain
4820 NodeManager
4711 DataNode
3768 Bootstrap
5050 Jps
4访问manager页面
Daemon | Web Interface | Notes |
---|---|---|
NameNode | http://nn_host:port/ | Default HTTP port is 9870. |
ResourceManager | http://rm_host:port/ | Default HTTP port is 8088. |
MapReduce JobHistory Server | http://jhs_host:port/ | Default HTTP port is 19888. |
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。