所谓伪分布式环境是指在一台电脑上搭建分布式。分布式,见名知义,一定是分布在多台电脑上的,为了学习技术,只在一台电脑上搭建起来的就是伪分布式。
前提:ssh无密码配置、jdk环境已经配置好,参见笔者文章《hadoop 分布式环境搭建》
。
hadoop安装包官方下载地址
- 更改主机名,执行命令:
vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=jason
- 修改ip,设置成固定ip :
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="static" ###
HWADDR="00:0C:29:3C:BF:E7"
IPV6INIT="yes"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="ce22eeca-ecde-4536-8cc2-ef0dc36d4a8c"
IPADDR="192.168.2.200" ###
NETMASK="255.255.255.0" ###
GATEWAY="192.168.2.1" ###
在宿主机中不能ping通,要考虑是不是在同个网段;还有linux的防火墙有没有关闭;
####这是CentOS7中关闭防火墙的方法#####
systemctl stop firewalld.service 关闭防火墙
systemctl disable firewalld.service 开机禁止启动防火墙
firewall-cmd --state 查看状态
- 设置hosts中ip与主机名的绑定,执行命令
vi /etc/hosts
在里面添加选项设置你的主机名与ip的对应关系
192.168.2.200 jason
安装hadoop
执行命令tar -zxvf hadoop-2.6.0-cdh5.7.0.tar.gz -C /usr/local/hadoop
,将压缩包解压到/usr/local/hadoop
文件夹下设置 hadoop-env.sh 和 yarn-env.sh 的 JAVA_HOME
export JAVA_HOME=/root/software/jdk1.8.0_171
- 进入hadoop安装目录,进入
etc/hadoop
目录下 - 修改etc/hadoop目录下的几个文件:
- core-site.xml
<!--指定hadoop运行路径-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://jason:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131702</value>
</property>
- hdfs-site.xml
<!-- 文件副本数 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/hadoop/hdfs/data</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>jason:9001</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<!-- 其他用户操作时会提醒没有权限的问题 -->
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
- mapred-site.xml
mv mapred-site.xml.template mapred-site.xml
- mapred-site.xml
<!-- 指定mr运行在yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>jason:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>jason:19888</value>
</property>
- yarn-site.xml
<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>jason:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>jason:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>jason:8035</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>jason:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>localhost:8088</value>
</property>
修改slaves文件,将hadoop集群主机名称添加进去
jason
修改环境变量:
vi /etc/profile
HADOOP_HOME=/usr/local/hadoop/hadoop-2.6.0
export PATH=$HADOOP_HOME/bin:$PATH
启动
- 初始化,输入命令
bin/hadoop namenode -format
- 全部启动
sbin/start-all.sh
报错
“unable to load native hadoop library for your platform”
此问题的根本的解决办法是:下载相关版本的lib类库,解压到hadoop/lib目录下,并写入环境变量
lib类库下载地址log4j报WARN
解决办法是直接在log4j日志中去除告警信息:
在/usr/local/hadoop/hadoop-2.6.0/etc/hadoop/log4j.properties
文件中添加
log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR