
前言
由于现在要用spark,而学习spark会和hdfs和hive打交道,之前在公司服务器配的分布式集群,离开公司之后,自己就不能用了,后来用ambari搭的三台虚拟机的集群太卡了,所以就上网查了一下hadoop+hive的单机部署,以便自己能进行简单的学习,这里记录一下,本来想把hadoop和hive的放在一起写,由于太多,就分成两篇写了。
1、首先安装配置jdk(我安装的1.8)
2、下载hadoop
下载地址:http://mirror.bit.edu.cn/apache/hadoop/common/,我下载的是hadoop-2.7.5.tar.gz
(由于我之前用的2.7.1是几年前下载保存在本地的,现在发现之前在配置spark那篇写的那个hadoop下载地址较慢,所以改成这个地址)
3、解压到/opt目录下(目录根据自己习惯)
tar -zxvf hadoop-2.7.5.tar.gz -C /opt/
4、配置hadoop环境变量
vim /etc/profile
export HADOOP_HOME=/opt/hadoop-2.7.5
export PATH=$PATH:$HADOOP_HOME/bin
source /etc/profile
5、配置hadoop
5.1 配置hadoop-env.sh
vim /opt/hadoop-2.7.5/etc/hadoop/hadoop-env.sh
export JAVA_HOME=/opt/jdk1.8.0_45
找到# The java implementation to use.将其下面的一行改为:
5.2 配置core-site.xml (5.2和5.3中配置文件里的文件路径和端口随自己习惯配置)
其中的IP:192.168.44.128为虚拟机ip,不能设置为localhost,如果用localhost,后面在windows上用saprk连接服务器(虚拟机)上的hive会报异常(win读取的配置也是localhost,这样localhost就为win本地ip了~也可以给ip加个映射,不过因为单机的我就没加)。
vim /opt/hadoop-2.7.5/etc/hadoop/core-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:///opt/hadoop-2.7.5</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.44.128:8888</value>
</property>
</configuration>
5.3 配置hdfs-site.xml
vim /opt/hadoop-2.7.5/etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///opt/hadoop-2.7.5/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///opt/hadoop-2.7.5/tmp/dfs/data</value>
</property>
</configuration>
6、SSH免密码登录
以下用三台centos为例,ip分别为192.168.44.138、192.168.44.139、192.168.44.140,分别对应别名master、slave1、slave2
1、首先在每个机器上执行
ssh-keygen -t rsa
将公钥导入到认证文件中一直按回车默认就好
将三个机器上id_rsa.pub的内容合并起来放在authorized_keys,可以用命令按下面的步骤来,也可以分别将三个机器的公钥拷贝出来放在一个文件里,之后分别复制到各自机器的authorized_keys,我用的是下面的命令
2.1 在master上执行
cd ~/.ssh
cat id_rsa.pub>>authorized_keys
如果不能免密登录,可能是文件权限不对,执行下面的命令,再验证一下(这时如果配单机的话,就可以免密登录本机了,可以执行ssh localhost 或ssh master验证一下,如下图)
chmod authorized_keys
然后将master的authorized_keys传到slave1上的.ssh目录下
scp -r authorized_keys root@slave1:~/.ssh
2.2 在slave1上执行
cd ~/.ssh
cat id_rsa.pub>>authorized_keys
scp -r authorized_keys root@slave2:~/.ssh
2.3 在slave2上执行
这一步实际是将salve1的id_rsa.pub和master传过来的authorized_keys里的内容合并起来存到authorized_keys,然后将authorized_keys传到slave2机器上
cd ~/.ssh
cat id_rsa.pub>>authorized_keys
scp -r authorized_keys root@master:~/.ssh
scp -r authorized_keys root@slave1:~/.ssh
ssh master这一步实际是将salve2的id_rsa.pub和slave1传过来的authorized_keys里的内容合并起来存到authorized_keys,然后将authorized_keys传到master、slave1机器上。
到这里,每台机器上的authorized_keys都含有三台机器的公钥,在每台机器上验证一下是否可以免密ssh登录到三台机器上了。
ssh slave1
ssh slave2
如果都不需要输入密码,就代表配置成功!
7、启动与停止
第一次启动hdfs需要格式化:
cd /opt/hadoop-2.7.
./bin/hdfs namenode -format
Re-format filesystem in Storage Directory /opt/hadoop-2.7.5/tmp/dfs/name ? (Y or N)
输入:Y
(出现询问输入Y or N,全部输Y即可)
启动:
./sbin/start-dfs.sh
停止:
./sbin/stop-dfs.sh
验证,浏览器输入:http://192.168.44.128:50070
简单的验证hadoop命令:
hadoop fs -mkdir /test
在浏览器查看,出现如下图所示,即为成功
8、配置yarn
8.1 配置mapred-site.xml
cd /opt/hadoop-2.7./etc/hadoop/
cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
<configuration>
<!-- 通知框架MR使用YARN -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
8.2 配置yarn-site.xml
vim yarn-site.xml
<configuration>
<!-- reducer取数据的方式是mapreduce_shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
8.3 yarn启动与停止
启动:
cd /opt/hadoop-2.7.
./sbin/start-yarn.sh
停止:
./sbin/stop-yarn.sh
浏览器查看:http://192.168.44.128:8088
jps查看进程
到此,hadoop单机模式就配置成功了!