2019-11-05 Hadoop集群搭建

最近在学习大数据,在自己本地装了三个虚拟机,学习搭建hadoop集群。记录下过程,方便日后查看。

1.准备工作

  VMware-workstation-full-12.1.0,Centos 7_x64镜像,jdk_1.8.0_linux_x64,hadoop_2.7.7.

虚拟机安装步骤参考:https://www.cnblogs.com/tony-hyn/p/9677902.html

jdk刚开始从Oracle官网下载,结果使用tar -zxvf 解压时一直报错,后来查阅资料,使用wget 方法直接下载到linux中.

 参考资料:https://blog.csdn.net/u011365831/article/details/79301188

hadoop下载地址:https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz

使用tar -zxvf 解压hadoop时也报错,将tar.gz后缀修改为.tar,再次解压搞定。

2.搭建集群

2.1 建议在安装系统镜像时顺便配置下网络,修改下hostname.或者单独修改每台机器的hostname

vi /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=Mage1

2.2 在命令行输入: vi /etc/hosts

添加3台服务器的节点名信息

192.168.126.133 node1

192.168.126.134   node2

192.168.126.135   node3

2.3 关闭防火墙

查看防火墙状态

firewall-cmd --state

停止firewall

systemctl stop firewalld.service

禁止firewall开机启动

systemctl disable firewalld.service

2.4 时间同步

命令行输入:yum install ntp 下载ntp插件 ,

下载完成后 命令行输入:ntpdate -u ntp1.aliyun.com

2.5 配置ssh无密码访问

使用root用户创建hadoop用户并分配到hadoop组,如下图所示以test用户为例:


将test用户赋予root权限: 修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行

## Allow root to run any commands anywhere

root     ALL=(ALL)   ALL

test      ALL=(ALL)   ALL 

修改完毕,现在可以用test 帐号登录,然后用命令 sudo ,即可获得root权限进行操作。

在每个节点上分别执行:ssh-keygen -t rsa 一直按回车直到生成结束

执行结束之后每个节点上的/hadoop/.ssh/目录下生成了两个文件 id_rsa 和 id_rsa.pub

其中前者为私钥,后者为公钥

在主节点上执行:

命令行输入:cp id_rsa.pub authorized_keys

将子节点的公钥拷贝到主节点并添加进authorized_keys

将两个子节点的公钥拷贝到主节点上

分别在两个子节点上执行:

scp /hadoop/.ssh/id_rsa.pub   hadoop@node1:/hadoop/.ssh/id_rsa_node2.pub

scp /hadoop.ssh/id_rsa.pub    hadoop@node1:/hadoop/.ssh/id_rsa_node3.pub

然后在主节点上,将拷贝过来的两个公钥合并到authorized_keys文件中去

主节点上执行:

cat id_rsa_node2.pub>> authorized_keys

cat id_rsa_node3.pub>> authorized_keys

将主节点的authorized_keys文件分别替换子节点的authorized_keys文件

主节点上用scp命令将authorized_keys文件拷贝到子节点的相应位置

scp authorized_keys   hadoop@node2:/hadoop/.ssh/

scp authorized_keys   hadoop@node3:/hadoop/.ssh/

2.6 配置jdk

配置环境变量, 编辑~/.bash_profile文件:

vi   ~/.bash_profile

在文件末尾添加以下代码:

export JAVA_HOME=实际路径

export JRE_HOME=$JAVA_HOME/jre

export PATH=$JAVA_HOME/bin:$PATH

export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib

source  ~/.bash_profile,使环境变量生效

2.7 安装配置hadoop

配置环境变量, 编辑~/.bash_profile文件:

vi   ~/.bash_profile

在文件末尾添加以下代码:

export HADOOP_HOME=实际路径

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

source  ~/.bash_profile,使环境变量生效

配置hadoop配置文件

需要配置的文件的位置为 hadoop路径/etc/hadoop,需要修改的有以下几个文件:

hadoop-env.sh

yarn-env.sh

core-site.xml

hdfs-site.xml

mapred-site.xml

yarn-site.xml

slaves

其中hadoop-env.sh和yarn-env.sh里面都要添加jdk的环境变量

修改hadoop-env.sh


修改yarn-env.sh


修改core-site.xml(加粗斜体部分需要按照实际修改,提前创建所需目录)

<configuration>

        <property>

                <name>fs.defaultFS</name>

                <value>hdfs://node1:9000</value>

        </property>

        <property>

                <name>io.file.buffer.size</name>

                <value>131072</value>

        </property>

        <property>

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

                <value>file:/home/hadoop/app/hadoop-2.7.7/temp</value>

        </property>

        <property>

                <name>hadoop.proxyuser.root.hosts</name>

                <value>*</value>

        </property>

        <property>

                <name>hadoop.proxyuser.root.groups</name>

                <value>*</value>

        </property>

</configuration>


修改hdfs-site.xml (加粗斜体部分需要按照实际修改, 提前创建所需目录 )

<configuration>

        <property>

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

                <value>node1:9001</value>

        </property>

        <property>

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

                <value>file:/home/hadoop/app/hadoop-2.7.7/namenode</value>

        </property>

        <property>

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

                <value>file:/home/hadoop/app/hadoop-2.7.7/data</value>

        </property>

        <property>

                <name>dfs.replication</name>

                <value>2</value>

        </property>

        <property>

                <name>dfs.webhdfs.enabled</name>

                <value>true</value>

        </property>

        <property>

                <name>dfs.permissions</name>

                <value>false</value>

        </property>

        <property>

                <name>dfs.web.ugi</name>

                <value>supergroup</value>

        </property>

</configuration>

注意要将mapred-site.xml.template重命名为 .xml的文件  mv mapred-site.xml.template mapred-site.xml,并修改

(加粗斜体部分需要按照实际修改)

<configuration>

        <property>

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

                <value>yarn</value>

        </property>

        <property>

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

                <value>node1:10020</value>

        </property>

        <property>

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

                <value>node1:19888</value>

        </property>

</configuration>

修改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.address</name>

                <value>node1:8032</value>

        </property>

        <property>

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

                <value>node1:8030</value>

        </property>

        <property>

                <name>yarn.resourcemanager.resource-tracker.address</name>

                <value>node1:8031</value>

        </property>

        <property>

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

                <value>node1:8033</value>

        </property>

        <property>

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

                <value>node1:8088</value>

        </property>

</configuration>

修改slaves

node1

node2

node3

将hadoop与环境变量scp 到其他主机

格式化主节点的namenode,进入hadoop目录然后执行:

./bin/hadoop namenode -format

3 启动hadoop

start-all.sh

主节点以及从节点进程

主节点进程


从节点进程
从节点进程
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容