【心血之作】linux虚拟机下安装配置Hadoop(完全分布式)生态环境(hadoop2.2.0,HBase0.98,Hive0.13(连接oracle),sqoop1.4.4(连接oracle)
来源:互联网 发布:手机优酷网络连接失败 编辑:程序博客网 时间:2024/06/05 18:52
本教程与网络上其他教程的区别之处在于我是先在一台虚拟机上配置好一个伪分布式的Hadoop生态环境,在测试过所有进程都能够正常运行后,在修改部分配置文件,而后进行虚拟机克隆,实现完全分布式的搭建。(如果你也是要在一台服务器上安装多个虚拟机来实现hadoop的完全分布式,那本文可以帮到你)
首先本次环境搭建是在Virtualbox虚拟机上安装的Centos6.5(64位)系统上进行搭建,下面列出本次安装所用到的软件版本及下载链接:
jdk1.8.0_77 for Linux(64位)
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html(oracle官网)
HBase0.98.17
Hive0.13.0
Sqoop1.4.4
http://pan.baidu.com/s/1c2NndoW(上述四个安装包下载地址)
说明:Hadoop和HBase的完全分布式需要在每个节点上都安装和配置,而每个节点的配置基本都相同;Hive只需要在master节点安装和配置就可以实现完全分布式的存储(因为hive是基于HDFS的),为了之后的配置方便,我们先进行单节点的配置,然后克隆节点,在稍作修改,就可以实现完全分布式了。
1.安装jdk
将安装包解压到一个文件夹下,这里为/home/lab422/jdk1.8.0_77
在最后面添加如下内容:
JAVA_HOME=/home/lab422/jdk1.8.0_77
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOMECLASSPATH PATH
保存后使配置生效:
source /etc/profile验证是否安装成功:java –version
(我这里因为centos系统自带Jdk1.7,我做了上述配置后java版本提示是1.7,并不是我下载的1.8,解决办法:先将系统内自带的jdk卸载,然后在配置自己的就行了,卸载jdk网上教程很多,这里不做介绍)
chkconfig iptables off 关闭开机启动。
将下载的压缩包解压到一个文件夹下,这里为/home/lab422/hadoop-2.2.0
配置之前,需要在本地文件系统创建以下文件夹:
(~这里代表/home/lab422)
~/dfs/name
~/dfs/data
~/tmp
打开/etc/profile(vi /etc/profile)
在最后加上下列语句:export HADOOP_HOME=/home/lab422/hadoop-2.2.0
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"
export YARN_HOME=$HADOOP_HOME
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
执行source /etc/profile ,使更改后的profile生效。
chmod 777 /home/lab422/hadoop-2.2.0/bin/*
chmod 777 /home/lab422/hadoop-2.2.0/sbin/*
下面进行hadoop配置文件的配置:(所有的配置文件都在~/hadoop-2.2.0/etc/hadoop文件夹里)
hadoop-env.sh修改JAVA_HOME值(export JAVA_HOME=/usr/java/jdk1.8)
yarn-env.sh
修改JAVA_HOME值(export JAVA_HOME=/usr/java/jdk1.8)
core-site.xml
<configuration>
<property>
<name>fs.default.name</name> (之前网上有教程这里写的是fs.defaultFS,但是配置后会出现namenode无法启动的情况)
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/lab422/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>hadoop.proxyuser.lab422.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.lab422.groups</name>
<value>*</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>localhost:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hduser/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hduser/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</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>localhost:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>localhost:19888</value>
</property>
</configuration>
yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>localhost:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>localhost:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>localhost:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>localhost:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>localhost:8088</value>
</property>
</configuration>
(注意上述<value>内的值开头不能有空格,否则系统会不识别。
PS:当初就因为resoucemanager配置时开头多了个空格,导致集群启动时没有resoucemanager进程没有启动)
启动验证启动hadoop:
格式化namenode:hdfs namenode –format
启动集群:
运行命令:start-all.sh(这里因为还没进行ssh无秘钥登陆,所以启动每个进程可能都要输一遍密码)
用jps命令查看进程运行状态:
运行的进程应该有:jps ,namenode,ResourceManager,SecondaryNameNode,datanode,NodeManager
打开HBASE_HOME/conf/hbase-env.sh,添加以下内容:
export JAVA_HOME=/home/lab422/jdk1.8/
export HBASE_MANAGES_ZK=true
打开HBASE_HOME/conf/hbase-site.xml,添加以下内容:
<property>
<name>hbase.rootdir</name>
<value>hdfs://localhost:9000/hbase-0.98.17</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.master</name>
<value>localhost:60000</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>localhost</value>
</property>
启动验证
用如下命令启动和关闭Hbase:
start-hbase.sh
stop-hbase.sh
注意:必须先启动Hadoop,再启动Hbase;先关闭Hbase,再关闭Hadoop
用jps命令查看进程状态:
运行的进程有:
jps ,namenode,ResourceManager,SecondaryNameNode,datanode,NodeManager,HMaster,HRegionServer,HQuorumPeer。
export HIVE_HOME=/home/lab422/hive-0.13.0 export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HBASE_HOME/bin:$HIVE_HOME/bin:$SQOOP_HOME/bin
<name>javax.jdo.option.ConnectionDriverName</name>
初始化hive元数据表:
export SQOOP_HOME=/home/lab422/sqoop-1.4.4 export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HBASE_HOME/bin:$SQOOP_HOME/bin
首先输入命令:sudo vi /etc/udev/rules.d/70-persistent-net.rules
将上一个eth0网卡内容注释掉,在将下面都eth1改成eth0
保存后重启(reboot)
(开机后ifconfig查看当前ip,MAC地址
输入命令:sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
修改相应参数:IP,mac地址,网关
使系统连接System eth0这个网
执行命令:sudo service network restart 使配置生效
此时电脑上方网络配置那个图标下留下System eth0,将其他都删掉就行了
每个节点都做如下操作:
ssh-keygen -t rsa (一路回车)
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys (把id_rsa.pub追加到授权的key里面去)
此时修改权限(很关键!!失败好几次都是这个原因)
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
命令:sudo vi /etc/ssh/sshd_config
(修改SSH配置文件"/etc/ssh/sshd_config"),修改如下内容
RSAAuthentication yes # 启用 RSA 认证
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)
命令:service sshd restart(重新启动服务)
命令:ssh localhost (测试是否成功)
应该会成功(之前就是没修改权限,导致本地无密钥登录还需要输入密码)
下面是把公钥复制到所有的slave节点上去:
命令:scp ~/.ssh/id_rsa.pub lab422@slave1:~/
(就是把master节点的公钥发送到了slave1的根目录下了)
到这里,我的master节点的公钥已经发送到了slave1的根目录下,现在登录slave1节点,在slave1节点虚拟机上操作下面的内容:
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
(这行命令是把master的公钥追加到Slave1.Hadoop的授权文件"authorized_keys"中去)
命令:sudo vi /etc/ssh/sshd_config
(修改ssh配置文件,和上面master节点配置方式一样,参考下上面的步骤,在此不在重复)
在master节点上使用命令:ssh slave1
应该会不用输密码就能登录slave1了
但是,之后我退出命令行窗口新建了一个命令行在测试,
提示Agent admitted failure to sign using the key.
而且又需要输入密码了,此时在master节点输入如下命令即可:
ssh-add
执行命令start-hbase.sh
master节点进程:
slave1节点进程:
(说明:QuorumPeerMain进程是我安装的zookeeper的守护进程,本文中没有提到,如果按照本文的安装过程安装的话,slave节点上的该进程将会被hbase自带的HQuorumPeer进程取代)
- 【心血之作】linux虚拟机下安装配置Hadoop(完全分布式)生态环境(hadoop2.2.0,HBase0.98,Hive0.13(连接oracle),sqoop1.4.4(连接oracle)
- Hadoop2.2.0安装配置手册!完全分布式Hadoop集群搭建过程~(心血之作啊~~)
- Hadoop2.2.0安装配置手册!完全分布式Hadoop集群搭建过程~(心血之作啊~~)
- Hadoop2.2.0安装配置手册!完全分布式Hadoop集群搭建过程~(心血之作啊~~)
- Hadoop2.2.0安装配置手册!完全分布式Hadoop集群搭建过程~(心血之作啊~~)
- Hadoop2.2.0安装配置手册!完全分布式Hadoop集群搭建过程~(心血之作啊~~) .
- Hadoop2.3.0+Hbase0.96.1.1+Hive0.14.0+Zookeeper3.4.6+Sqoop1.99.3安装配置流程
- Hbase0.98版本的安装部署配置管理(Hadoop2.3、Hbase0.98、Hive0.13整合)
- Hbase0.98版本的安装部署配置管理(Hadoop2.3、Hbase0.98、Hive0.13整合)
- Hbase0.98版本的安装部署配置管理(Hadoop2.3、Hbase0.98、Hive0.13整合)
- Hadoop2.3、 Hbase0.98、 Hive0.13架构中Hive的安装部署配置以及数据测试
- PLSQL客户端连接虚拟机(linux)下Oracle配置
- hadoop2.5.0和hbase0.98完全分布式安装
- hadoop2.2.0+hbase0.96.2完全分布式安装教程
- Ubuntu16.04下伪分布式环境搭建之hadoop2.6.0、jdk1.7、Hbase0.98的安装与配置
- 虚拟机Ubuntu下Hadoop2.6.1的安装和配置(完全分布式)
- linux下hadoop2.x完全分布式配置
- Hadoop2.2.0 + HBase0.96 伪分布式安装
- 文件传输协议(FTP)必将消亡
- C++作业2
- 梯度弥散
- 求出data为首地址的100D字数组中的最小偶数,并把它存放在AX中,目前只能做出无符号数,有待修改
- JavaScript-数据类型-隐式转换1
- 【心血之作】linux虚拟机下安装配置Hadoop(完全分布式)生态环境(hadoop2.2.0,HBase0.98,Hive0.13(连接oracle),sqoop1.4.4(连接oracle)
- 大数据量高并发的数据库优化
- POJ1275 Cashier Employment
- CROC 2016 - Elimination Round B 树状数组处理逆序对个数
- Python itertools模块详解
- leetcode017 Letter Combinations of a Phone Number
- VBA基础
- Linux 上的常用文件传输方式介绍与比较
- c语言学习路程 冒泡排序算法void bubble(int i )函数