Hadoop安装手册

1 安装环境

内核:3.10.0-229.el7.x86_64

操作系统:CentOS 7

ssh和sshd已经默认配置

在局域网中有三台机器用于安装:192.168.1.170,192.168.1.171,192.168.1.172,此处192.168.1.170为namenode,192.168.1.171和192.168.1.172为datanode1和datanode2。

IP地址已经配置好,三台机器互相可以通信。

2 配置Java

此处将Java配置到系统环境里面去。

首先,解压缩Java官方压缩包,并配置环境变量。

表2-1:配置Java(root用户)

tar -xzf jdk-8u45-linux-x64.gz

mv ./jdk1.8.0_45 /usr/local/java

cat <<HERE >>/etc/profile

JAVA_HOME=/usr/local/java

PATH=\$PATH:\$JAVA_HOME/bin

HERE

需要在三台机器上分别执行该配置操作。

如果需要JAVA_HOME环境变量在当前shell环境立即生效,执行如下命令即可。

表2-2:应用环境变量(root用户)

source /etc/profile

3 添加hadoop用户

分别在三台机器上添加hadoop用户,配置完成后,通过hadoop用户来使用Hadoop。

表3-1:添加hadoop用户(root用户)

useradd hadoop

passwd hadoop

4 配置主机名

4.1 配置/etc/hosts文件

在三台机器上的/etc/hosts文件末尾加入如下内容:

表4-1:修改/etc/hosts文件(root用户)

192.168.1.170   hmaster

192.168.1.171   hslave1

192.168.1.172   hslave2

4.2 配置/etc/hostname文件

将/etc/hostname文件,根据namenode,datanode1,datanode2的顺序修改为:

表4-2:修改/etc/hostname文件(root用户)

hmaster

hslave1

hslave2

    修改/etc/hostname文件会在节点重启后依然生效。执行如下命令,只会在当前环境生效,重启失效。

按照同样的顺序(namenode,datanode1,datanode2)分别执行以下命令在各节点上。

表4-3:设置主机名(root用户)

hostname hmaster

hostname hslave1

hostname hslave2

5 配置ssh免密登录

首先,需要在三台机器上修改sshd的配置文件以允许使用密钥的验证方式登录。

表5-1:启用ssh密钥验证方式登录(root用户)

cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup

sed -i '1,/#RSA/s/#RSA/RSA/' /etc/ssh/sshd_config

sed -i '1,/#Pub/s/#Pub/Pub/' /etc/ssh/sshd_config

service sshd restart

需要在三台机器上分别生成private和public密钥。其中将namenode的公钥分发给namenode,datanode1和datanode2,将datanode1和datanode2的公钥分发给namenode。datanode1和datanode2互相分发公钥。

表5-2:namenode分发公钥(hadoop用户)

mkdir $HOME/namenode

echo "" | ssh-keygen -t rsa -P ''

ssh-copy-id hadoop@hmaster

ssh-copy-id hadoop@hslave1

ssh-copy-id hadoop@hslave2

表5-3:datanode1分发公钥(hadoop用户)

mkdir $HOME/datanode

echo "" | ssh-keygen -t rsa -P ''

ssh-copy-id hadoop@hmaster

ssh-copy-id hadoop@hslave2

表5-4:datanode2分发公钥(hadoop用户)

mkdir $HOME/datanode

echo "" | ssh-keygen -t rsa -P ''

ssh-copy-id hadoop@hmaster

ssh-copy-id hadoop@hslave1

配置完成之后,namenode的hadoop用户就可以免密ssh登录datanode1和datanode2了。同时,datanode1和datanode2也分别可以通过hadoop用户免密ssh登录namenode了。

6 配置Hadoop

6.1 配置环境变量

分别在三台机器上配置Hadoop。首先解压缩Hadoop官方压缩包,并为hadoop用户配置环境变量。

表6-1:配置Hadoop(root用户)

tar -xzf hadoop-2.6.0.tar.gz

mv hadoop-2.6.0 /usr/local/hadoop

chown -R hadoop:hadoop /usr/local/hadoop

表6-2:配置Hadoop环境变量(hadoop用户)

cat  <<HERE >>/home/hadoop/.bashrc

HADOOP_HOME=/usr/local/hadoop

HADOOP_PREFIX=\$HADOOP_HOME

HADOOP_COMMON_HOME=\$HADOOP_HOME

HADOOP_CONF_DIR=\$HADOOP_HOME/etc/hadoop

HADOOP_HDFS_HOME=\$HADOOP_HOME

HADOOP_MAPRED_HOME=\$HADOOP_HOME

HADOOP_YARN_HOME=\$HADOOP_HOME

PATH=\$PATH:\$HADOOP_HOME/sbin:\$HADOOP_HOME/bin

HERE

如果需要hadoop相关环境变量在当前shell环境立即生效,执行如下命令即可。

表6-3:应用环境变量(hadoop用户)

source ~/.bashrc

6.2 修改hadoop-env.sh

修改hadoop默认配置文件。默认配置文件存放在$HADOOP_HOME/etc/hadoop目录下。

hadoop-env.sh(三台机器)

首先备份该文件:

表6-4:备份hadoop-env.sh(hadoop用户)

cp hadoop-env.sh hadoop-env.sh.backup

将该文件修改成如下内容:

表6-5:修改后的hadoop-env.sh

export JAVA_HOME=/usr/local/java

export HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-"/etc/hadoop"}

for f in $HADOOP_HOME/contrib/capacity-scheduler/*.jar; do

  if [ "$HADOOP_CLASSPATH" ]; then

    export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$f

  else

    export HADOOP_CLASSPATH=$f

  fi

done

export HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true"

export HADOOP_NAMENODE_OPTS="-Dhadoop.security.logger=${HADOOP_SECURITY_LOGGER:-INFO,RFAS} -Dhdfs.audit.logger=${HDFS_AUDIT_LOGGER:-INFO,NullAppender} $HADOOP_NAMENODE_OPTS"

export HADOOP_DATANODE_OPTS="-Dhadoop.security.logger=ERROR,RFAS $HADOOP_DATANODE_OPTS"

export HADOOP_SECONDARYNAMENODE_OPTS="-Dhadoop.security.logger=${HADOOP_SECURITY_LOGGER:-INFO,RFAS} -Dhdfs.audit.logger=${HDFS_AUDIT_LOGGER:-INFO,NullAppender} $HADOOP_SECONDARYNAMENODE_OPTS"

export HADOOP_NFS3_OPTS="$HADOOP_NFS3_OPTS"

export HADOOP_PORTMAP_OPTS="-Xmx512m $HADOOP_PORTMAP_OPTS"

export HADOOP_CLIENT_OPTS="-Xmx512m $HADOOP_CLIENT_OPTS"

export HADOOP_SECURE_DN_USER=${HADOOP_SECURE_DN_USER}

export HADOOP_SECURE_DN_LOG_DIR=${HADOOP_LOG_DIR}/${HADOOP_HDFS_USER}

export HADOOP_PID_DIR=${HADOOP_PID_DIR}

export HADOOP_SECURE_DN_PID_DIR=${HADOOP_PID_DIR}

export HADOOP_IDENT_STRING=$USER

6.3 修改hdfs-site.xml

hdfs-site.xml(三台机器)

首先备份该文件:

表6-6:备份hdfs-site.xml(hadoop用户)

cp hdfs-site.xml hdfs-site.xml.backup

将该文件修改成如下内容:

表6-7:修改后的hdfs-site.xml

<configuration>

<property>

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

        <value>/home/hadoop/namenode</value>

</property>

<property>

       <name>dfs.permissions.superusergroup</name>

       <value>hadoop</value>

</property>

<property>

       <name>dfs.permissions</name>

       <value>false</value>

</property>

<property>

       <name>dfs.client.block.write.replace-datanode-on-failure.policy</name>

       <value>never</value>

</property>

<property>

       <name>dfs.replication</name>

       <value>2</value>

</property>

<property>

       <name>dfs.support.append</name>

       <value>true</value>

</property>

<property>

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

        <value>hmaster:50090</value>

</property>

<property>

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

       <value>hmaster:50070</value>

</property>

<property>

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

       <value>file:///home/hadoop/datanode</value>

       <final>true</final>

</property>

</configuration>

6.4 修改mapred-site.xml

mapred-site.xml(三台机器)

首先生成该文件:

表6-8:备份mapred-site.xml(hadoop用户)

cp mapred-site.xml.template mapred-site.xml

将该文件修改成如下内容:

表6-9:修改后的mapred-site.xml

<configuration>

<property>

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

   <value>yarn</value>

</property>

</configuration>

6.5 修改slaves

slaves(三台机器)

首先备份该文件:

表6-10:备份slaves(hadoop用户)

cp slaves slaves.backup

将该文件修改成如下内容:

表6-11:修改后的slaves

hslave1

hslave2

6.6 修改yarn-site.xml

yarn-site.xml(三台机器)

首先备份该文件:

表6-12:备份yarn-site.xml(hadoop用户)

cp yarn-site.xml yarn-site.xml.backup

将该文件修改成如下内容:

表6-13:修改后的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.resource-tracker.address</name>

<value>hmaster:8031</value>

</property>

<property>

<name>yarn.resourcemanager.address</name>

<value>hmaster:8032</value>

</property>

<property>

<name>yarn.resourcemanager.scheduler.address</name>

<value>hmaster:8030</value>

</property>

<property>

<name>yarn.resourcemanager.admin.address</name>

<value>hmaster:8033</value>

</property>

<property>

<name>yarn.resourcemanager.webapp.address</name>

<value>hmaster:8088</value>

</property>

<property>

<description>Classpath for typical applications.</description>

<name>yarn.application.classpath</name>

<value> $HADOOP_CONF_DIR,$HADOOP_COMMON_HOME/share/hadoop/common/*,$HADOOP_COMMON_HOME/share/hadoop/common/lib/*,$HADOOP_HDFS_HOME/share/hadoop/hdfs/*,$HADOOP_HDFS_HOME/share/hadoop/hdfs/lib/*,$HADOOP_YARN_HOME/share/hadoop/yarn/*,$HADOOP_YARN_HOME/share/hadoop/yarn/lib/*</value>

</property>

</configuration>

6.7 修改core-site.xml

core-site.xml(三台机器)

首先备份该文件:

表6-14:备份core-site.xml(hadoop用户)

cp core-site.xml core-site.xml.backup

将该文件修改成如下内容:

表6-15:修改后的core-site.xml

<configuration>

<property>

    <name>fs.defaultFS</name>

    <value>hdfs://hmaster:9000/</value>

</property>

<property>

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

       <value>/home/hadoop/data/hadoop/tmp</value>

</property>

</configuration>

6.8 关闭防火墙及禁用IPv6

关闭防火墙:

表6-16:关闭防火墙(root用户)

systemctl stop firewalld

# 执行以下命令配置开机禁用防火墙

systemctl disable firewalld

禁用IPv6:

表6-17:备份/etc/sysctl.conf文件(root用户)

cp /etc/sysctl.conf /etc/sysctl.conf.backup

表6-18:添加如下内容到/etc/sysctl.conf(root用户)

net.ipv6.conf.all.disable_ipv6 = 1

net.ipv6.conf.default.disable_ipv6 = 1

要使/etc/sysctl.conf文件修改立即生效,执行如下命令即可。

表6-19:应用修改(root用户)

sysctl -p

禁用SELINUX,修改/etc/selinux/config文件,修改成如下内容。

表6-20:修改/etc/selinux/config文件(root用户)

# This file controls the state of SELinux on the system.

# SELINUX= can take one of these three values:

#     enforcing - SELinux security policy is enforced.

#     permissive - SELinux prints warnings instead of enforcing.

#     disabled - No SELinux policy is loaded.

#SELINUX=enforcing

SELINUX=disabled

# SELINUXTYPE= can take one of three two values:

#     targeted - Targeted processes are protected,

#     minimum - Modification of targeted policy. Only selected processes are protected.

#     mls - Multi Level Security protection.

SELINUXTYPE=targeted

 修改此配置文件后,重启机器会禁用掉SELINUX。

如果要立即禁用SELINUX,执行如下命令即可。

表6-21:禁用SELINUX(root用户)

setenforce 0

69 格式化hdfs

在namenode上执行如下命令,格式化hdfs:

表6-22:格式化hdfs(hadoop用户)

hdfs namenode -format

7 测试

在namenode上执行如下命令启动Hadoop:

表7-1:启动Hadoop(hadoop用户)

start-dfs.sh

start-yarn.sh

访问http://hmaster:50070,测试是否安装成功。hmaster可以更换为实际的namenode的IP地址。

如果在Windows上面访问,可以修改系统hosts文件来实现主机名和IP地址的对应。修改C:\Windows\System32\drivers\etc\hosts文件,在该文件中加入如下内容,保存后,即可在浏览器地址栏输入主机名代替IP地址。

192.168.1.170   hmaster

192.168.1.171   hslave1

192.168.1.172   hslave2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值