hadoop搭建(完全分布式)

链接:https://pan.baidu.com/s/1F7Ke7RHBjYCz3ISKuGPRTQ

提取码:y7t2

本教程由centos7加hadoop2.7.5加jdk1.7构成:
一、网络文件设置 (涉及ifcfg-ens33、hostname、hosts)

 

克隆三个虚拟机分别命名为 master   slave1   slave2

 

修改网卡配置文件:gedit /etc/sysconfig/network-scripts/ifcfg-ens33

 

然后分别修改:

master:

#添加以下内容  为虚拟机ip配置,可自定义

IPADDR=192.168.11.111

NETMASK=255.255.255.0

GATEWAY=192.168.11.1

#修改为静态ip

BOOTPROTO=static

#设置网卡自动开启

ONBOOT=yes

#如果没有MAC地址,则添加

HWADDR=本机mac地址(通过ifconfig查看)

 

如此  slave1和slave2这样操作  分别配置为192.168.11.112  192.168.11.113

 

 

修改网络名文件: gedit  /etc/hostname

删掉原来的内容  分别修改为  master  slave1  slave2

修改域名解析文件:  gedit  /etc/hosts

#添加

master   192.168.11.111

slave1    192.168.11.112

slave2    192.168.11.113

(三个文件同时这样添加)

 

最后 重启网卡  systemctl restart network

二、配置ssh免密登录

分别在三台电脑上建立新用户 hadoop,并修改密码

useradd hadoop

passwd hadoop

 

然后配置sudo文件,让他们可以使用sudo命令

visudo

#找到root ALL=(ALL) ALL这一行,在下面添加

Hadoop ALL=(ALL)  ALL

#顺便把这一行的#号去掉。去掉了就不用管了

#%wheel  ALL=(ALL)       ALL

 

Centos7默认集成着ssh服务

保证由master主机能够免密码登录到slave节点上

# master 生成公钥(三台都要配置)

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

chmod 600 ~/.ssh/authorized_keys

复制 master 公钥到 slave节点

# 复制 master 主机公钥到 slave节点的 /tmp 目录

scp  ~/.ssh/id_rsa.pub [email protected]:/tmp/authorized_keys

 

scp  ~/.ssh/id_rsa.pub [email protected]:/tmp/authorized_keys

追加 /tmp/authorized_keys 到 ~/.ssh/authorized_keys

cat /tmp/authorized_keys >>  ~/.ssh/authorized_keys

注意:

1) .ssh目录的权限必须是700

2) .ssh/authorized_keys文件权限必须是600

 

三、配置基础环境

基础环境包括java环境和hadoop基础配置,从百度云连接上提取jdk和hadoop源码,通过tools,共享文件夹,u盘传输等方式,拷贝到虚拟机内。

配置java环境

cd /usr

mkdir lo

cd lo

mkdir java

mkdir hadoop

cd 桌面

sudo tar -zxvf jdk-1.7.tar.gz -C /usr/lo/

sudo tar -zxvf hadoop-2.7.5.tar.gz -C /usr/lo/

cd /usr/lojdk1.7.0_80

pwd    #这个是java环境的工作路径

cd /usr/lo/hadoop-2.7.5

pwd  #这个是hadoop的工作路径

cd /usr

sudo chown hadoop -R lo

#到目前为止,解压完成,以下开始配置环境

sudo gedit /etc/profile

#修改JAVA_HOME为当前工作路径

export JAVA_HOME=(pwd时输出的路径)

#然后添加

export HADOOP_HOME=(pwd时输出的路径)

export HADOOP_INSTALL=$HADOOP_HOME

export HADOOP_MAPRED_HOME=$HADOOP_HOME

export HADOOP_COMMON_HOME=$HADOOP_HOME

export HADOOP_HDFS_HOME=$HADOOP_HOME

export YARN_HOME=$HADOOP_HOME

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

#在PATH里面加上hadoop的路径

export PATH=$JAVA_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$PATH

#保存并关闭

刷新文件

source /etc/profile

java -version

hadoop

运行这两条命令时,出现这个,代表配置成功

 

 

接下来开始配置hadoop四文件:这四个文件都在hadoop安装目录下的etc/hadoop
第一个文件 core-site.xml:

 

<configuration>

  <!--指定namenode的地址-->

    <property>

            <name>fs.defaultFS</name>

            <value>hdfs://master:9000</value>

    </property>

  <!--用来指定使用hadoop时产生文件的存放目录-->

    <property>

            <name>hadoop.tmp.dir</name>

            <value>/usr/lo/tmp</value>

    </property>

</configuration>

第二个文件hdfs-site.xml:

 

<configuration>

  <!--指定hdfs保存数据的副本数量-->

    <property>

            <name>dfs.replication</name>

            <value>2</value>

</property>

 <!--指定SecondayNameNode的端口号-->

    <property>

            <name>dfs.namenode.secondary.http-address</name>

            <value>Master:50090</value>

    </property>

  <!--指定hdfs中namenode的存储位置-->

    <property>

            <name>dfs.namenode.name.dir</name>

            <value>/usr/lo/tmp/name</value>

    </property>

  <!--指定hdfs中datanode的存储位置-->

    <property>

            <name>dfs.datanode.data.dir</name>

            <value>/usr/lo/tmp/data</value>

    </property>

</configuration>

第三个文件mapred-site.xml

 

<configuration>

  <!--告诉hadoop以后MR(Map/Reduce)运行在YARN上-->

    <property>

            <name>mapreduce.framework.name</name>

            <value>yarn</value>

     </property>

  <!--配置MapReduce历史服务器-->

     <property>

            <name>mapreduce.jobhistory.address</name>

            <value>Master:10020</value>

     </property>

     <property>

            <name>mapreduce.jobhistory.webapp.address</name>

            <value>Master:19888</value>

     </property>

</configuration>

第四个文件yarn-site.xml

 

<configuration>

  <!--nomenodeManager获取数据的方式是shuffle-->

    <property>

            <name>yarn.nodemanager.aux-services</name>

            <value>mapreduce_shuffle</value>

    </property>

  <!--指定Yarn的老大(ResourceManager)的地址-->     

    <property>

            <name>yarn.resourcemanager.hostname</name>

            <value>master</value>

    </property>        

<configuration>

 

然后修改  hadoop-env.sh

把里面的JAVA_HOME 修改成profile中的JAVA_HOME路径。

接着修改  slaves

把 192.168.11.112  192.168.11.113 添加到里面

 

然后  把整个配置好的hadoop目录和java目录打包,发给其他slave节点机

cd /usr

tar -zcvf lo.tar.gz lo

 

发送

(这里需要提前在两个子节点建立属主为hadoop用户的文件例如/usr/tmp1)

scp /usr/lo.tar.gz [email protected]:/usr/tmp1

scp /usr/lo.tar.gz [email protected]:/usr/tmp1

 

持一致格式化文件系统

hdfs namenode -format

启动文件服务

start-dfs.sh

start-yarn.sh

 

 

 

Hadoop出现错误:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable,解决方案

在hadoop—env.sh中  添加export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib/native" 

 

 

猜你喜欢

转载自www.cnblogs.com/jiu-jie/p/10031321.html