建议使用版本
hadoop2.7.1+hbase1.2.1+hive2.0.0+zookeeper3.4.8
这里我使用的hadoop2.8,但是hadoop2.8并不支持base1.0之后的版本
推荐使用Hadoop2.7版本
注意阿里云配置的时候非本机host和hostname改为内网连接地址
安装hadoop
- 修改hostname
# 机器ip与hostname对应关系
# host1 master-node
# host2 data-node1
# host3 data-node2
# 具体命令如下(演示master-node,其他两个类似)
hostname master-node
vim /etc/hostname
修改为master-node 保存退出,重新连接服务器,会发现名称已修改
- 修改hosts文件
vim /etc/hosts # 添加以下内容 注意三台机器一致
host1 master-node
host2 data-node1
host3 data-node2
# wq!保存退出,用ping检查机器之间是否相通
ping -c 3 data-node1
- 配置私钥,为了三台机器免密登录
# 以master-node 为例 其他类似
ssh-keygen -t rsa -P '' #回车
# 秘钥文件会存在/root/.ssh/ 目录下
cat /root/.ssh/id_rsa.pub
# 查看秘钥文件
- 配置authorized_keys
# 以master-node 为例 其他类似
# 创建authorized_keys
# 注意文件位置对应 与hosts中顺序对应,不然会ssh不上,这是个大坑
touch /root/.ssh/authorized_keys
# 将三台机器中的id_rsa.pub中的内容全都复制到authorized_keys中 每个秘钥一行
# 建议在window下写好authorized_keys 再分别传到/etc/.ssh/目录下
# 不建议使用 NotePad++ 这软件修改xml等配置文件在linux上会报一个错 无法解决
# authorized_keys 示例如下 注意@后面名字是否为对应机器hostname
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCvoWi6uhuAQLuWpAy3cLQn3ge4dhTHfHGUHvN8gPyjFq91OJQkgu43QJHD89REEo+a3aysBcyg7SW3rOfpn7HPO4MBFDZXhttS5fFzDroq6xIcM1GH6Qsd5yJYLZruD/9pg4fO3JZ8IsUH1Sge7K3OnmDFNOVzfFSaLplKCZoTaWKfFqtHhEzU0MwiUegNl03zF8Dr4K665HIc7uPKV4VeW1WgNrCM/LcGYZhHBYkRC5iGj/PRDMxjV3V1WCh/7oZeGsMEb7luGdZRC10UO0psUuKs1LnmrS9cO92TBTGKJDP70SmgTzgjmaaEcTUBAhbdZPIoO3SU9XxG2zRdm0x1 root@master-node
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDSA/Rw0wG7egHT2eFnLtrxq72mMYQuYL7HnmM3ePcUcrIXO3hGEoPrrPCM3Zh6zCNxgc2NjQBXIFYCpgHTgNKixGNKXOKjhqK0fvbOH4Z6jiCjLdrxZ2ZDvrZkurUiqEgyQ1tc4DmKRkfxQVNXbS4HFZgUquR6meXv+R5122pEF7+fdcH1YgQ1YAoZXV87+PcOVjhHab09EgZMTrI/E9GDR9E5QF/ZHtZOa9OGUIQMNkZ/Q98vJ5JV6GWp4kKPx7PeypBQWwvPSz7ZXxc6kzgRjYTsjpMZW2fZgvaJWYDBYukB54RPkyHlfwslHSQh/Hi/IrfjeZEbJbBGt0KkYSrP root@data-node1
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCz5+sbGk+7Ob12NkHbo+FxZTESZMKrjhXR9SKBNbdjOwpt/AaRIDMMO07q37QEYyPSmj9CHeFUH5RQS5QaTykZpBsaZ771fGw01TZDQ/fxId+71XQgruGqG/A673K2Awr0H9NOlWPhpDUdj/n5aXA0soUs83jRbtTXKF3cTeB4zy59AtjbGPH0og98Lon3qsR092qrzSrm/arUJfRsLY1SGwy/dq16U38hAFBi0zz1oyZAIC+D85GcddmRszrf5iADKPuIPUyUAmuZ15MrAzPXIljpu+lwaxRjv0Sm7Z/NKhGyQCvzCYJH68uSzHNV/pNKFBEP38zgNczyPDcioBqp root@data-node2
# 分别拷贝到三台机器etc/.ssh目录下
# 用ssh命令 测试无密登录
ssh data-node1
# 第一次使用 会提示是否保存连接 如果没有没有ping通检查这一步骤
- 安装jdk(注:必须使用jdk1.8以上版本,1.8以前的版本hadoop并不支持)
# 三台机器jdk统一安装在同一目录 便于以后写配置文件
# 详细安装这里不介绍 命令检查下jdk就好
javac
- 安装配置hadoop(这里以2.8版本为例,强烈不建议使用hadoop3.0以上)
# 三台机器重复此操作
cd /opt/hadoop
tar -zxvf hadoop-2.8.0.tar.gz
# 配置环境变量
vim /etc/profile
# 添加内容如下
HADOOP_HOME=/usr/local/hadoop/hadoop-2.8.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
#立即生效
source /etc/profile
修改以下配置文件
core.site.xml 9000端口为hadoop默认端口,可以修改
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/dfs/tmp</value>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master-node:9000</value>
</property>
hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/opt/dfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/opt/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
hadoop-env.sh
#改为本机对应的jdk路径
export JAVA_HOME=${JAVA_HOME}
mapred-site.xml (mapred-site.xml.template 参考模板)
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
slaves
# 添加如下内容
data-node1
data-node2
yarn-site.xml
<?xml version="1.0"?>
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master-node</value>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>2.1</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
</configuration>
- hadoop启动
- 初始化namenode(注意:只能初始化一次,如果初始化多次需要删除所有机器下/etc/dfs目录)
hadoop namenode -format
- 启动推荐使用官方命令
# 推荐
start-dfs.sh
start-yarn.sh
# 可以 但不建议使用
start-all.sh
# 停止命令
stop-yarn.sh
stop-dfs.sh
# 不建议
stop-all.sh
# 使用jps 查看启动进程
jps
# 如果出现 ResourceManager NameNode 则说明启动成功
# 访问 master-node:8088 查看yarn是否启动
# 访问 master-node:50070 查看namenode是否启动
到此hadoop安装完成
报错总结
- jps报process information unavailable
# 有些经常没有正常结束就会这样
# 资源消耗过大或者没有结束进程就重启进程
# 使用此命令会删除所有hadoop进程
rm -rf /tmp/hsperfdata_*