Hadoop2.7.3部署
来源:互联网 发布:服装之星v8数据库补丁 编辑:程序博客网 时间:2024/06/16 09:53
一、安装前准备
1. 宿主机安装虚拟机
VMware-workstation-full-12.1.1-3770994.exe
2. 虚拟机安装CentOS操作系统
CentOS-7-x86_64-DVD-1611.iso
在装好的VMware中新建虚拟机并安装Linux CentOS64位操作系统,为保证系统运行效率,避免图形界面占用太多资源,本次实验选用了CentOS-7-x86_64。虚拟机的内存设为1G,硬盘设为20G,网络模式设为“桥接”。CentOS选择最小化安装。
3. 配置ip地址
a) 输入如下命令修改配置ip地址
# vi /etc/sysconfig/network-scripts/ifcfg-ens33
ifcfg-ens33后面的数字是自动生成的,每台机器可能不一样,进行如下配置:
BOOTPROTO=static #把dhcp改为static,启用静态地址
ONBOOT=yes #把no改为yes,开启自动启用网络连接
IPADDR=192.168.241.235
GATEWAY=192.168.241.129
NETMASK=255.255.255.128
DNS=192.168.241.128
b) 输入如下命令重启网络
# service network restart
CentOS 7 不再使用 ifconfig 而是用 ip 命令查看网络信息
# ip addr
4. 修改主机名
a) 输入命令:
# vi /etc/hostname
b) 修改为如下主机名:
master
c) 输入命令:
# shutdown -r now
5. 添加本机ip到域名
a) 输入命令:
# vi /etc/hosts
b) 添加如下:
127.0.0.1 localhost localhost.localdomainlocalhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.241.235 master
6. 设置yum方式从本地安装软件包
CentOS虚拟机不能联网状况下yum命令无法使用,需做如下配置
a) 挂载CentOS安装光盘
# mkdir /mnt/cdrom
# mount -t iso9660 /dev/cdrom /mnt/cdrom
b) 修改yum配置文件
# cd /etc/yum.repos.d/
会看到三个文件,第一个CentOS-Base.repo是yum网络源的配置文件,第三个CentOS-Media.repo是本地源的配置。
修改CentOS-Media.repo
在baseurl中,修改第2个路径为/mnt/cdrom(即为光盘挂载点)
将enabled=0改为1
c) 将yum网络源配置文件改名为CentOS-Base.repo.bak,否在会先在网络源中寻找适合的包,改名之后直接从本地源读取。
好了,现在你可以安装你要的包了,比如你要安装gcc,输入命令yuminstall gcc即可!
7. 安装szrz
CentOS7.0最小化版不支持sz、rz命令,输入如下命令安装
# yum install lrzsz
8. 安装vim
# yum -y install vim
9. 宿主机安装XShell
文件-->新建,连接主机
二、Hadoop部署
1. Java安装
所有的机器上都要安装JDK,先在Master服务器安装,其他服务器按照步骤重复进行即可,也可以采用完全复制已经安装好的虚拟机的方法。安装JDK以及配置环境变量,需要以"root"的身份进行。下载java开发工具包,在实际使用中,我们下载的版本是jdk-8u112-linux-x64.rpm。
1.1 安装JDK
打开XShell,用root身份登录"master",后在"/usr"下创建"java"文件夹。命令如下:
# mkdir /usr/java
# cd /usr/java
# rz
选择已下载到宿主机上的jdk-8u112-linux-x64.rpm
# chmod+x jdk-8u112-linux-x64.rpm
# rpm -ivh jdk-8u112-linux-x64.rpm
1.2 配置环境变量
编辑"/etc/profile"文件,在后面添加Java的"JAVA_HOME"、"CLASSPATH"以及"PATH"内容。命令如下:
# vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_112
export CLASSPATH=$CLASSPATH:$JAVA_HOME /lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin
保存并退出,执行下面命令使其配置立即生效。
# source /etc/profile
1.3 验证安装成功
配置完毕并生效后,用下面命令判断是否成功。
# java -version
出现了相关参数提示,如图所示,说明java开发环境已经安装完毕。
2. Hadoop集群安装
所有的机器上都要安装hadoop,先在Master服务器安装,然后其他服务器按照步骤重复进行即可。也可以采用完全复制已经安装好的虚拟机的方法。安装和配置hadoop需要以"root"的身份进行。本次实验下载的版本为hadoop-2.7.3。
2.1 安装Hadoop
a) 上传hadoop-2.7.3.tar.gz到虚拟机
在root路径下新建文件夹Hadoop,并进入目录,再使用rz命令把" hadoop-2.7.3.tar.gz "上传到"/root/Hadoop"目录下面。
# mkdir /root/Hadoop
# cd /root/Hadoop
# rz
通过rz命令弹出的“打开”对话框在宿主机上找到hadoop-2.7.3.tar.gz
b) 解压hadoop-2.7.3.tar.gz
用下面命令把"hadoop-2.7.3.tar.gz "进行解压,然后删除" hadoop-2.7.3.tar.gz "安装包。
# tar -zxvf hadoop-2.7.3
# rm -rf hadoop-2.7.3
2.2 配置Hadoop
# vim/root/Hadoop/hadoop-2.7.3/etc/hadoop/hadoop-env.sh
在hadoop-env.sh最后增加exportJAVA_HOME=/usr/java/jdk1.8.0_112
# vim /etc/profile
在profile最后添加如下设置:
export HADOOP_HOME=/root/Hadoop/hadoop-2.7.3
exportPATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
2.3 配置core-site.xml文件
a) 在/root/Hadoop/hadoop-2.7.3/目录下创建tmp文件夹
# mkdir /root/ Hadoop/hadoop-2.7.3/tmp
b) 编辑core-site.xml
# vim/root/Hadoop/hadoop-2.7.3/etc/hadoop/core-site.xml
在<configuration></configuration>中加入以下内容
<property>
<name>hadoop.tmp.dir</name>
<value>/root/Hadoop/hadoop-2.7.3/tmp</value>
<!--请先在 /usr/hadoop 目录下建立 tmp 文件夹-->
<description>Abase for other temporary directories.</description>
</property>
<!--file system properties -->
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
如下配置是读写sequence file 的 buffer size,可减少 I/O 次数。在大型的 Hadoop cluster,建议可设定为 65536 到 131072,默认值 4096
<property>
<name>io.file.buffer.size</name>
<value>131702</value>
</property>
2.4 配置hdfs-site.xml文件
配置数据副本数量,先配成1,再复制。
# vim /root/Hadoop/hadoop-2.7.3/etc/hadoop/hdfs-site.xml在<configuration></configuration>中加入以下内容
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/root/Hadoop/hadoop-2.7.3/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/root/Hadoop/hadoop-2.7.3/tmp/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
<!--备注:replication 是数据副本数量,默认为3,salve少于3台就会报错-->
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
2.5 配置mapred-site.xml文件
配置的是JobTracker的地址和端口,复制一份template,并改名。
# vim/root/Hadoop/hadoop-2.7.3/etc/hadoop/mapred-site.xml
在<configuration></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>
2.6 配置yarn-site.xml文件
# vim/root/Hadoop/hadoop-2.7.3/etc/hadoop/yarn-site.xml
在<configuration></configuration>中加入以下内容
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<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>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<description>The https adddress of the RM webapplication.</description>
<name>yarn.resourcemanager.webapp.https.address</name>
<value>${yarn.resourcemanager.hostname}:8090</value>
</property>
2.7 配置masters文件:(目录下没有,从slaves复制一份)
打开该文件,把“localhost”改为master。该文件指定namenode
2.8 配置slaves文件(Master主机特有)
打开该文件,把“localhost”改为slave1。该文件中有哪些主机名,哪些主机就作为datanode,每个主机名占一行
3. 配置Slaves节点
为了降低配置Hadoop的难度,并且同时测试系统动态扩展的能力,Slave节点的配置实际上分为两个阶段:
复制主节点虚拟机作为从节点1:
1) 使用VMWare的“克隆”功能复制主节点作为从节点1;
2) 将从节点1命名为slave1;
3) 将从节点1的ip地址配置为192.168.241.236;
4) 将从节点1的主机名改为slave1
5) 修改从节点1的hosts网址和域名映射
复制从节点1作为从节点2和从节点3
1) 在VMware中克隆虚拟机,分别命名为Slave2和Slave3(完全复制)
2) 打开从节点,分别把IP地址改为192.168.241.237,192.168.241.238
3) 修改从节点2、3的主机名、ip地址和域名映射
4) 修改master节点配置文件,加入两个新的从节点
$ vim $HADOOP_HOME/etc/hadoop/slaves
添加如下内容:
slave1
slave2
slave3
该文件只在master节点上起作用,各个slave节点改不改都可以。
将新添加的节点的主机名添加到该文件中,一个主机名占一行。
5) 修改master配置,子节点数改为3;
$ vim $HADOOP_HOME/etc/hadoop/hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>3</value>
<!--备注:replication 是数据副本数量,默认为3,salve少于3台就会报错-->
</property>
6) 分别重启四台虚拟机。
执行完所有的配置之后,需要确保所有的机器之间都可以可以访问到的,通过命令行中的“ping 机器IP”指令,验证所有虚拟机之间都是可以互通的。
4. 安装SSH
4.1 安装和启动SSH协议
安装CentOS6.0时,我们选择了一些基本安装包, ssh和rsync已经安装了。通过下面命令查看:
# rpm -qa | grep openssh
# rpm -qa | grep rsync
结果显示如下图:
4.2 Master机器上生成密码对
在Master节点上执行以下命令:
# ssh-keygen -t rsa -P ''
保存路径时直接回车采用默认路径。生成的密钥对:id_rsa和id_rsa.pub,默认存储在"/root/.ssh"目录下。
4.3 把id_rsa.pub追加到授权的key里面去
在Master节点上做如下配置:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
4.4 修改文件"authorized_keys"权限
chmod 600 ~/.ssh/authorized_keys
4.5 设置SSH配置
用root用户登录服务器修改SSH配置文件"/etc/ssh/sshd_config"的下列内容:
RSAAuthentication yes # 启用 RSA 认证
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)
4.6 验证设置
设置完之后,重启SSH服务,使设置有效,执行如下命令:
service sshd restart
4.7 复制公钥到Slave机器上
在主机上执行:
scp ~/.ssh/id_rsa.pub root@192.168.241.236:~/
在Slave机器上创建.ssh文件夹并设置权限为700
mkdir ~/.ssh
chmod 700 ~/.ssh
4.8 追加到授权文件
把主节点的公钥追加到授权文件"authorized_keys"
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
4.9 用root用户修改slave节点的"/etc/ssh/sshd_config"
具体命令如下:
RSAAuthentication yes # 启用 RSA 认证
PubkeyAuthentication yes # 启用公钥私钥配对认证方式AuthorizedKeysFile/root/.ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)
重启服务:service sshd restart
4.10 用Master.Hadoop使用SSH无密码登录Slave1.Hadoop
在Slave节点:
ssh-keygen -t rsa -P ''
cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys
scp ~/.ssh/id_rsa.pub root@192.168.241.235:~/
在Master节点:
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
完成ssh配置
5. 格式化Hadoop系统
在启动Hadoop系统之前,需要先格式化一个Hadoop系统,执行如下指令:
# hadoop namenode -format
如果顺利完成,则说明系统格式化完成,下面即可启动并使用Hadoop系统了,如果失败,则需要查看Hadoop安装目录中的logs目录下的日志了。
6. 启动Hadoop集群
6.1 启动
在启动前关闭集群中所有机器的防火墙,不然会出现datanode开后又自动关闭。
a) 关闭防火墙执行命令:
# sudo systemctl stop firewalld.service && sudo systemctldisable firewalld.service
b) 启动NameNode、DataNode和SecondaryNameNode
# start-dfs.sh
执行结果如下图:
c) 启动ResourceManager和NodeManager
# start-yarn.sh
执行结果如下图:
6.2 验证hadoop启动
用““hadoop dfsadmin -report”
Master服务器的状态:
Slave服务器的状态:
7. 遇到的困难及解决方法
7.1 slaver
注意:单词拼写slave写成slaver会导致意料不到的错误
7.2 service iptables stop 提示Failed to stop iptables.service: Unit iptables.service not loaded
centos从7开始默认用的是firewalld,这个是基于iptables的,虽然有iptables的核心,但是iptables的服务是没安装的。所以你只要停止firewalld服务即可:sudo systemctl stop firewalld.service&& sudo systemctl disable firewalld.service
如果你要改用iptables的话,需要安装iptables服务:
sudo yum install iptables-services
sudo systemctl enable iptables && sudosystemctl enable ip6tables
sudo systemctl start iptables && sudosystemctl start ip6tables
7.3 使用hadoop命令提示如下错误
DEPRECATED: Use of this script to execute hdfscommand is deprecated.
Instead use the hdfs command for it.
从0.21.0版本以后,hadoop 命令换成了hdfs命令,将命令中的hadoop换为hdfs即可。
7.4 出现如下警告是版本不一致问题
Java HotSpot(TM) Client VM warning: You haveloaded library /usr/local/hadoop2.5/lib/native/libhadoop.so.1.0.0 which mighthave disabled stack guard. The VM will try to fix the stack guard now
Java HotSpot(TM) 64-Bit Server VM warning: Youhave loaded library /usr/local/hadoop-2.2.0/lib/native/libhadoop.so.1.0.0 whichmight have disabled stack guard. The VM will try to fix the stack guard now.
WARN [main] util.NativeCodeLoader: Unable to load native-hadoop library foryour platform... using builtin-java classes where applicable
这个问题的错误原因会发生在64位的操作系统上,原因是从官方下载的hadoop使用的本地库文件(例如lib/native/libhadoop.so.1.0.0)都是基于32位编译的,运行在64位系统上就会出现上述错误。解决方法之一是在64位系统上重新编译hadoop,另一种方法是在hadoop-env.sh和yarn-env.sh中添加如下两行:
exportHADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_PREFIX}/lib/native
exportHADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib"
7.5 执行start-dfs.sh后,DateNode消失
打开hdfs-site.xml里配置的datanode和namenode对应的目录,分别打开current文件夹里的VERSION,可以看到clusterID项正如日志里记录的一样,确实不一致,修改datanode里VERSION文件的clusterID 与namenode里的一致,再重新启动dfs(执行start-dfs.sh)再执行jps命令可以看到datanode已正常启动。
Hadoop配置完成!
出现该问题的原因:在第一次格式化dfs后,启动并使用了hadoop,后来又重新执行了格式化命令(hdfs namenode-format),这时namenode的clusterID会重新生成,而datanode的clusterID 保持不变。
- Hadoop2.7.3部署
- Hive2.1.1、Hadoop2.7.3 部署
- Hive2.1.1、Hadoop2.7.3 部署
- # hadoop2.7.3-spark2.0.2集群部署(备忘)
- Hadoop2 伪分布式部署
- Hadoop2.0安装部署
- hadoop2.6.3 集群部署
- hadoop2.5.2安装部署
- Hadoop2.7.2的部署
- hadoop2.7.1单机部署
- hadoop2.6 HA部署
- Hadoop2.6.5安装部署
- hadoop2.7.3 ha 环境部署——QJM
- 基于docker1.7.03.1单机上部署hadoop2.7.3集群
- hadoop2.7.3在centos7上部署安装(单机版)
- Hadoop2.7.3+Hbase-1.2.6完全分布式安装部署
- hadoop2.7.3在centos7上部署安装(单机版)
- hadoop2的伪分布部署
- win10+cuda8.0+matlab2014a+caffe配置经历记录
- cocos2dx schedule/update不起作用的调用
- linux下execl和execlp之间的区别
- 优先队列的用法
- 实现drawableTop 图片文字无间距
- Hadoop2.7.3部署
- ARMA模型和ARIMA模型一种误差检验
- Unity AssetBundle 打包爬坑
- 前端—初试
- Servlet相关知识
- Strust2值栈
- 运行在TCP 或UDP的应用层协议分析。
- 28款jQuery Tree 树形结构插件
- 排序