centos7 安装hadoop:伪分布式配置、全分布模式配置
来源:互联网 发布:自动曝光控制算法 编辑:程序博客网 时间:2024/05/18 12:41
1. centos 新建hadoop用户
#切换到root用户[sunwei@vdevops ~]$ su #增加一个名为 hadoop 的用户[root@vdevops ~]# useradd -m hadoop -G root -s /bin/bash#给hadoop新建一个密码[root@vdevops ~]# passwd hadoop#为hadoop用户增加管理员权限[root@vdevops sunwei]# visudo在“## Allow root to run any commands anywhere”这句下面增加:hadoop ALL=(ALL) ALL
2.配置Java环境
登录hadoop用户。
首先安装JDK,可用yum安装
配置JAVA_HOME环境变量
vim ~/.bashrc
在文件最后面添加如下单独一行(指向 JDK 的安装位置),并保存
export JAVA_HOME=/usr/java/jdk1.8.0_112
接着还需要让该环境变量生效,执行如下代码:
[hadoop@vdevops ~]$ source ~/.bashrc
设置好后我们来检验一下是否设置正确:
[hadoop@vdevops ~]$ echo $JAVA_HOME [hadoop@vdevops ~]$ java -version[hadoop@vdevops ~]$ $JAVA_HOME/bin/java -version
如果设置正确的话,$JAVA_HOME/bin/java -version 会输出 java 的版本信息,且和 java -version 的输出结果一样。
3. 安装hadoop
#先创建一个文件夹hadoopDownload用于存放下载的文件(目录/home/hadoop/下):[hadoop@vdevops ~]$mkdir hadoopDownload#1.下载hadoop[hadoop@vdevops hadoopDownload]$ wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.8.2/hadoop-2.8.2.tar.gz#2.下载mds 该文件包含了检验值,可用于检查 hadoop-2.x.y.tar.gz 的完整性,否则若文件发生了损坏或下载不完整,Hadoop 将无法正常运行。[hadoop@vdevops hadoopDownload]$ wget https://dist.apache.org/repos/dist/release/hadoop/common/hadoop-2.8.2/hadoop-2.8.2.tar.gz.mds#3.检查MD5值是否相等,如果不相等 表示下载的文件不完整# 3.1 列出hadoop-2.8.2.tar.gz.mds的md5检验值[hadoop@vdevops hadoopDownload]$ cat ./hadoop-2.8.2.tar.gz.mds | grep 'MD5'# 3.2 计算hadoop-2.8.2.tar.gz的MD5值,并转化为大写,方便比较[hadoop@vdevops hadoopDownload]$ md5sum ./hadoop-2.8.2.tar.gz | tr "a-z" "A-Z"
比较3.1 3.2步列出的md5值,若相等则说明下载的tar.gz文件相等,若不相等,则必须重新下载。
解压hadoop包
[hadoop@vdevops hadoopDownload]$ sudo tar -zxf /home/hadoop/hadoopDownload/hadoop-2.8.2.tar.gz -C /usr/local # 解压到/usr/local目录下[hadoop@vdevops hadoopDownload]$ cd /usr/local/ [hadoop@vdevops local]$sudo mv ./hadoop-2.8.2/ ./hadoop #修改文件夹名[hadoop@vdevops local]$ sudo chown -R hadoop:hadoop ./hadoop # 修改文件权限
4.Hadoop单机配置(非分布式)
5.Hadoop伪分布式配置
5.1 设置 HADOOP 环境变量
在文件/home/hadoop/.bashrc 中的最后添加以下配置:
# Hadoop Environment Variablesexport HADOOP_HOME=/usr/local/hadoopexport HADOOP_INSTALL=$HADOOP_HOMEexport HADOOP_MAPRED_HOME=$HADOOP_HOMEexport HADOOP_COMMON_HOME=$HADOOP_HOMEexport HADOOP_HDFS_HOME=$HADOOP_HOMEexport YARN_HOME=$HADOOP_HOMEexport HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/nativeexport PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
这些变量在启动 Hadoop 进程时需要用到,不设置的话可能会报错(这些变量也可以通过修改 ./etc/hadoop/hadoop-env.sh 实现)
5.2 修改Hadoop配置文件
Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中
伪分布式需要修改2个配置文件 core-site.xml 和 hdfs-site.xml
5.2.1:修改core-site.xml:
将其中的
<configuration></configuration>
修改成:
<configuration> <property> <name>hadoop.tmp.dir</name> <value>file:/usr/local/hadoop/tmp</value> <description>A base for other temporary directories.</description> </property> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property></configuration>
5.2.2: 修改hdfs-site.xml文件:将
<configuration></configuration>
修改成
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/data</value> </property></configuration>
5.3 NameNode格式化
退回到目录/usr/local/hadoop下,执行 NameNode 的格式化:
[hadoop@vdevops hadoop]$ ./bin/hdfs namenode -format
格式化成功标志:“successfully formatted.”,“Exiting with status 0”。如果失败的话:Exiting with status 1
5.4 开启 NameNode 和 DataNode 守护进程:
在目录/usr/local/hadoop下:
[hadoop@vdevops hadoop]$ ./sbin/start-dfs.sh #开启 NameNode 和 DataNode 守护进程:
开启之后:
[hadoop@vdevops hadoop]$ jps964 NameNode1556 Jps1158 DataNode1389 SecondaryNameNode
若出现如下 SSH 的提示 “Are you sure you want to continue connecting”,输入 yes 即可。
关闭守护进程:
./sbin/stop-dfs.sh
有关启动与关闭的日志目录:/usr/local/hadoop/logs/
6.运行Hadoop伪分布式实例
参考:http://blog.csdn.net/sunweijm/article/details/78465230
的第三部分【3 上传jar包部署到hadoop服务器中】
7. 启动YARN
7.1 首先重命名 mapred-site.xml.template 文件
[hadoop@vdevops hadoop]$ mv ./etc/hadoop/mapred-site.xml.template ./etc/hadoop/mapred-site.xml
7.2 修改mapred-site.xml
修改为:
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property></configuration>
7.3 修改文件yarn-site.xml:
<configuration><!-- Site specific YARN configuration properties --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property></configuration>
7.4 启动YARN
[hadoop@vdevops hadoop]$ ./sbin/start-dfs.sh #首先启动守护进程[hadoop@vdevops hadoop]$ ./sbin/start-yarn.sh #启动YARN[hadoop@vdevops hadoop]$ ./sbin/mr-jobhistory-daemon.sh start historyserver # 开启历史服务器,才能在Web中查看任务运行情况
开启后通过 jps 查看,可以看到多了 NodeManager 和ResourceManager 两个后台进程(比较只开启 NameNode 和 DataNode 守护进程)
[hadoop@vdevops hadoop]$ jps964 NameNode2228 ResourceManager2740 Jps1158 DataNode2566 NodeManager1389 SecondaryNameNode
8. 全分布模式
8.1首先需要配置主从节点的免密登录
参考:http://blog.csdn.net/sunweijm/article/details/78852889
这样从 主节点 登录 从节点就可以不用输用户密码。
注意主从节点的用户名需要一样
1.配置core-site.xml
<configuration> <property> <name>hadoop.tmp.dir</name> <value>file:/usr/local/hadoop/tmp</value> <description>A base for other temporary directories.</description> </property> <property> <name>fs.defaultFS</name> <value>hdfs://vdevops:9900</value> <description>set namenode's hostname and ports</description> </property></configuration>
解释:
vdevops是主节点的hostname(也可以写成ip形式),所有丛节点上的该处都应该写上主节点的hostname或者ip,这里就是vdevops。
指定端口为9900,所有主从节点端口都为9900
2.配置hdfs-site.xml
<configuration> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/name</value> </property> <property> <name>fs.datanode.data.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/data</value> </property> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property></configuration>
解释:
dfs.replication:因为hadoop是具有可靠性的,它会备份多个副本,value的值就是HDFS的副本数,一般是等于从节点的个数(小于等于从节点的数量)
如果想要snn(SecondaryNameNode)运行在另外一台单独节点上,需要在hdfs-site.xml上增加以下内容:
<property> <name>dfs.nameservices</name> <value>hadoop-cluster</value> </property>
3.配置mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapred.job.tracker</name> <value>http://vdevops:9901</value> </property></configuration>
4.配置mapred-site.xml
<configuration><!-- Site specific YARN configuration properties --> <!-- 指定ResourceManager的地址--> <property> <name>yarn.resourcemanager.hostname</name> <value>vdevops</value> </property> <!-- 指定reducer获取数据的方式--> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property></configuration>
解释:
vdevops是主节点的hostname,从节点的该值也都应该是主节点的hostname,这里就是vdevops。
所以所有节点(主从节点)的core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml配置文件内容都应该相同
8.2实现主节点控制从节点的集群控制测试
1.主节点中
修改hadoop/etc/hadoop/slaves文件:
删除原先的localhost配置
将从节点的hostname或者ip添加进去
这里我的从节点只有test2一个。
当你去执行start-dfs.sh时,它会去slaves文件中去找从节点(这就是配置免密登录的原因)然后去启动从节点。
2.主节点对自己的免密登录配置
[hadoop@vdevops .ssh]$ cp id_rsa.pub authorized_keys#测试对本地的免密登录,如下显示[hadoop@vdevops .ssh]$ ssh 127.0.0.1 Last login: Wed Dec 20 15:27:45 2017 from 192.168.1.247
3.测试主节点控制从节点
主节点上运行start-dfs.sh
[hadoop@vdevops ~]$ /usr/local/hadoop/sbin/start-dfs.sh
查看启动服务情况
#主节点上[hadoop@vdevops ~]$ jps28192 SecondaryNameNode28343 Jps27935 NameNode
#从节点上[hadoop@test2 hadoop]$ jps27702 DataNode27914 Jps
主节点上运行start-yarn.sh
[hadoop@vdevops ~]$ /usr/local/hadoop/sbin/start-yarn.sh
再次查看主节点:
[hadoop@vdevops ~]$ jps16372 ResourceManager15031 NameNode15288 SecondaryNameNode16639 Jps
再次查看从几点:
[hadoop@test2 hadoop]$ jps27972 NodeManager27702 DataNode28124 Jps
在web平台查看:
一些问题:
1.一开始在启动运行start-dfs.sh时,发现子节点的Datanode启动不了
参考:http://blog.csdn.net/mmdlyn/article/details/52966942
http://blog.csdn.net/xiesai588/article/details/51222889
这种错误的原因是多次对namenode格式化使得VERSION不一致造成的。所以删除你在core-site.xml中配置的hadoop.tmp.dir所对应目录下的data目录。
1.1 首先在坏死的节点(这里是test2)上单独启动datanode:
进入到sbin下
[hadoop@test2 sbin]$ hadoop-daemon.sh start datanode
1.2 然后用jps查看发现test2的datanode仍然没有起来,
1.3 删除/usr/local/hadoop/tmp/dfs下的data目录
1.4 然后运行start-all.sh就可以看到从节点上datanode已经起来
2.刚启动hadoop时,删除hdfs文件时报错
报错信息:
[hadoop@vdevops hadoop]$ hdfs dfs -rm -r /user/hadoop/README.md17/12/20 18:38:10 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicablerm: Cannot delete /user/hadoop/README.md. Name node is in safe mode.
关闭safe mode模式就可以了:
[hadoop@vdevops hadoop]$ bin/hadoop dfsadmin -safemode leave
[1]: Hadoop安装教程 http://www.powerxing.com/install-hadoop-in-centos/
[2]:《Hadoop 实战 r3》
[3]:hadoop集群的配置 https://www.cnblogs.com/ejiyuan/p/5557061.html
[4]:手把手教你搭建Hadoop全分布式集群 https://www.cnblogs.com/zhangyinhua/p/7652686.html#_label0
- centos7 安装hadoop:伪分布式配置、全分布模式配置
- fedora18安装hadoop配置伪分布模式
- 安装并配置Hadoop伪分布模式
- hadoop-2.2.0全分布集群安装与配置(接上篇伪分布式)
- centos7配置hadoop伪分布式
- hadoop伪分布模式配置
- Hadoop配置伪分布模式
- 配置hadoop伪分布模式
- Hadoop伪分布模式配置
- Hadoop伪分布式模式安装配置步骤
- hadoop伪分布安装配置
- hadoop-2.2.0伪分布式与(全分布集群安装于配置续,很详细的哦~)
- HADOOP伪分布式模式 配置
- Hadoop伪分布式模式配置
- CentOS安装配置Hadoop 1.2.1(伪分布模式)
- Hadoop 伪分布式配置安装
- 伪分布式Hadoop配置安装
- Hadoop安装,伪分布式配置
- EL表达式 (详解)
- Java中基本数据类型和包装器类型的关系
- 数据库复习二
- ArrayBlockingQueue源码分析
- Java并发编程:阻塞队列
- centos7 安装hadoop:伪分布式配置、全分布模式配置
- 【头条】科技巨头的软实力,思科服务那些你看不到的内涵
- 电脑安装java环境
- webrtc 下载编译成功 当前时间2017年10月31日 09:33:35
- mysql存储过程3种循环结构之repeat循环举例
- JavaScript经典的排序方法
- js异步与解决Promise IE兼容问题
- Spring Session + Redis实现分布式Session共享
- 2017最新 公司开发者账号申请