hadoop集群搭建

来源:互联网 发布:易观数据怎么样 编辑:程序博客网 时间:2024/06/15 05:44

第一步:搭建配置新的虚拟机

格式化之前先把tmp目录下所有与Hadoop有关的信息全部删除

rm -rf /tmp/hadoop-centos*

开启之后jps只有Java的进程:sudo vi /etc/hosts 里面加 bogon
1.sudo赋权

Root用户 vi /etc/sudoers/root  n(查找下一个结果)centos  ALL=(ALL)     NOPASSWD:ALL

2.修改ens33网卡(桥接模式静态IP)
创建软链接

ln –s /etc/sysconfig/network-scripts/ifcfg-ens33 ens33

修改配置文件

vi /etc/sysconfig/network-scripts/ifcfg-ens33TYPE=EthernetBOOTPROTO=staticDEFROUTE=yesPEERDNS=yesPEERROUTES=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_PEERDNS=yesIPV6_PEERROUTES=yesIPV6_FAILURE_FATAL=noIPV6_ADDR_GEN_MODE=stable-privacyNAME=ens33UUID=51248a5b-aece-4777-ab51-7b5e61602180DEVICE=ens33ONBOOT=yesIPADDR=192.168.12.206NETMASK=255.255.255.0GATEWAY=192.168.12.1DNA1=219.141.136.10DNS2=202.106.196.115DNS3=8.8.8.8DNS4=114.114.114.114

改完后重启network服务

    sudo systemctl restart network

虚拟机上右键–>设置–>网络适配器–>桥接模式
检测是否连接网络 ping www.baidu.com
3.修改主机名

sudo  vi  /etc/hostname

原来内容全部删除 写入s126
重启虚拟机
4.安装JDK和Hadoop
1.上传文件包
2.解压 tar –zxvf **
3.创建软链接 ln –s * hadoop

tar -zxvf jdk-8u121-linux-x64.tar.gzln -s jdk1.8.0_121 javarm -rf jdk-8u121-linux-x64.tar.gz
tar -zxvf hadoop-2.8.0.tar.gzln -s hadoop-2.8.0 hadooprm -rf hadoop-2.8.0.tar.gz

4.配置环境变量

sudo vi /etc/profile

java

JAVA_HOME=/home/centos/javaexport PATH=$PATH:$JAVA_HOME/bin

hadoop

HADOOP_HOME=/home/centos/hadoopExport PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
vi ~/hadoop/etc/hadoop/hadoop-env.sh

java

export JAVA_HOME=/home/centos/java

5.刷新配置文件

source /etc/profile

5.关闭防火墙

sudo systemctl stop firewalld关闭防火墙sudo systemctl start firewalld开启防火墙sudo systemctl disable firewalld禁用防火墙(开机不启动)sudo systemctl enable firewalld使用防火墙(开机启动)sudo systemctl status firewalld查看防火墙状态

第二步:Hadoop集群搭建
1.独立模式
1、将hadoop的jar包上传服务器
2、解压tar包

tar –zxvf ****

3、创建软连接

ln –s *** hadoop

4、配置环境变量

[vi /etc/profile]

最下面加上

hadoop

HADOOP_HOME=/home/centos/hadoopexport PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

最后保存文件加载环境变量配置文件

source /etc/profile

5、修改hadoop环境变量配置文件配置jdk路径

[$HADOOP_HOME/etc/hadoop/hadoop-env.sh]

6、测试

hadoop version

默认hadoop就是独立模式。

特点:运行任务是一个java进程,就相当于运行一个java程序

2.伪分布式模式配置
修改hdfs配置文件

vi ~/hadoop/etc/hadoop/core-site.xml    cd ~/hadoop/etc/hadoop[core-site.xml]<configuration>        <property>                <name>fs.defaultFS</name>                <value>hdfs://192.168.12.126:9000</value>        </property></configuration>vi ~/hadoop/etc/hadoop/hdfs-site.xml[hdfs-site.xml]<configuration>        <property>                <name>dfs.replication</name>                <value>1</value>        </property></configuration>

设置ssh免密登录

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsacat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keyschmod 600 ~/.ssh/authorized_keys

检测方式:ssh localhost/主机真实ip

格式化文件系统

hadoop namenode -format

启动文件系统

jps                 检测Java开启的进程start-dfs.sh        启动文件系统(启动了三个java进程)jps                 再次检测Java开启的进程(应该是4个)

配置yarn资源管理器

cd ~/hadoop/etc/hadoop
cp  mapred-site.xml.template  mapred-site.xml
vi mapred-site.xml    <configuration>    <property>        <name>mapreduce.framework.name</name>        <value>yarn</value>    </property></configuration>vi yarn-site.xml<configuration>    <property>        <name>yarn.nodemanager.aux-services</name>        <value>mapreduce_shuffle</value>    </property></configuration>
start-dfs.sh  &&  start-yarn.sh  &&  jps

3.完全分布式
配置/etc/hosts文件(本地静态DNS)
首行加上 : bogon
增加:

192.168.12.201 s201192.168.12.202 s202192.168.12.203 s203

1.设置ssh免密登录:
(现在别的主机ssh 主机IP 然后把宿主机复制过去的权限600)
效果:从主机上能通过ssh免密登录
目的:在主机上通过ssh执行命令
设置的方式:
首先给主机设置ssh免密登录,将主机的公钥(id_rsa.pub)通过scp命令发送到其他 主机,在其他主机上将获取到的公钥追加到~/.ssh/authorized_keys。
主机:

ssh-keygen  –t  rsa  –P  ''  –f  ~/.ssh/id_rsacat  ~/.ssh/id_rsa.pub  >>  ~/.ssh/authorized_keyschmod 600 ~/.ssh/authorized_keys
scp ~/.ssh/id_rsa.pub centos@192.168.12.202:~/.ssh/id_rsa.pub.s201scp ~/.ssh/id_rsa.pub centos@192.168.12.203:~/.ssh/id_rsa.pub.s201
s202:    s203:        cat     ~/.ssh/id_rsa.pub.s201 >> ~/.ssh/authorized_keys

2.shell脚本的操作:
主机写分发脚本cpTo,查看脚本xcall。赋予执行权限。移动到/usr/local/bin目录下,以便我们能在任何地方使用脚本

脚本的目的是:修改完了主机的文件以后,可以通过它分发到其他主机,实现同步

脚本的用法:cpTo 文件(绝对路径/相对路径)

!/bin/bash

获取参数的绝对路径

dirname=`cd $(dirname $1); pwd`basename=`basename $1`echo ${dirname}/${basename}for i in s202 s203do        echo "=================$i ${dirname}/${basename}=================="        #如果其他机器没有父目录创建父目录        ssh $i mkdir -p ${dirname}         #远程拷贝文件        scp  $1 ${i}:${dirname}/${basename}done

[xcall.sh]

作用是通过ssh远程运行命令,比如查看jps,在比如删除/tmp

用法:xcall 命令

!/bin/bash

for host in s201 s202 s203
do
echo “====================echo host@===========================”
#ssh远程执行命令

$@获取所有参数

source /etc/profile 因为ssh远程执行命令不去加载/etc/profile,所以很多命令没法用

        ssh $host "source /etc/profile && $@"

Done

3.软件安装的操作
安装jdk、hadoop、配置环境变量JAVA_HOME、HADOOP_HOME,可以通过xcall脚本来 同步安装
在主机上修改hosts文件,给主机配置所有机器的dns服务,使用cpTo脚本分发到其他 机器,让其他机器也有dns服务
注意:/etc/hosts是root用户的文件,所以需要切换到root执行
dns服务: 可以将域名解析为ip地址。比如ping s201,解析成ping 192.168.12.201

4.配置文件操作
在主机上修改hadoop的配置文件:
[Hadoop-en.sh] [core-site.xml] [hdfs-site.xml] [mapred-site.xml] [yarn-site.xml] [slaves]
通过cpTo脚本进行分发(可以分发上一级目录来全部分发)
1、[hadoop-env.sh]配置javahome
2、[core-site.xml]配置连接url

[core-site.xml]<configuration>    <property>        <name>fs.defaultFS</name>        <value>hdfs://s201:9000</value>    </property></configuration>3、[hdfs-site.xml]配置的是副本数<configuration>    <property>        <name>dfs.replication</name>        <value>3</value>    </property></configuration>4、[mapred-site.xml]配置运行map任务采用的集群资源管理框架<configuration>    <property>        <name>mapreduce.framework.name</name>        <value>yarn</value>    </property></configuration>5、[yarn-site.xml]配置RM的节点和数据传输方式<configuration>    <property>        <name>yarn.resourcemanager.hostname</name>        <value>s126</value>    </property>    <property>        <name>yarn.nodemanager.aux-services</name>        <value>mapreduce_shuffle</value>    </property></configuration>

6、[slaves]配置datanode节点和NM节点

s201s202s203

5.主机格式化文件系统
只需要在主机格式化文件系统(xcall删除数据目录/tmp/hadoop*,日志文件/logs/*)
启动hdfs文件系统和yarn框架
xcall查看启动是否成功/看web

第三步:配置项目
1、将要统计的文件(wordcount.txt)上传到hdfs

hdfs dfs –put 本地文件 hdfs目录hdfs dfs -put  wordCount2.txt /user

2、运行任务

hadoop jar jar包 com.zdjy.bigdata.wordCount.hadoop.WordCountApp hdfs输    入文件

hdfs输出目录

hadoop jar wordCount.jar com.zdjy.WordCountApp /user/wordCount2.txt /saa

3、查看结果

hdfs dfs –cat hdfs输出目录下的文本文件 (hdfs dfs -cat /saa/*)

4.关闭文件系统

hdfs dfs -mkdir /userhdfs dfs -ls -R /hdfs -dfs -put wordCount2.txt /userhdfs dfs -put  wordCount2.txt /userhdfs dfs -ls -R /hadoop jar wordCount-0.0.1-SNAPSHOT.jarcom.zdjy.bigdata.wordCount.hadoop.WordCountApp /user/wordCount2.txt /outhdfs dfs -cat /out/*

5.在浏览器上看web(sudo systemctl stop firewalld关闭防火墙)
http://192.168.12.206:50070
文件系统:50070
yarn:8088
ssh免密登录与手动单独启动每一个进程
设置ssh免密登录的原因:我们start-dfs.sh/start-yarn.sh他们都是通过ssh来远程控制每一台主机的进程的启动

[start-dfs.sh]if [ -n "$HADOOP_SECURE_DN_USER" ]; then  echo \    "Attempting to start secure cluster, skipping datanodes. " \    "Run start-secure-dns.sh as root to complete startup."else  "$HADOOP_PREFIX/sbin/hadoop-daemons.sh" \    --config "$HADOOP_CONF_DIR" \    --script "$bin/hdfs" start datanode $dataStartOptfi[Hadoop-daemons.sh]exec "$bin/slaves.sh" --config $HADOOP_CONF_DIR cd "$HADOOP_PREFIX" \; "$bin/hadoop-daemon.sh" --config $HADOOP_CONF_DIR "$@"[slaves.sh]for slave in $SLAVE_NAMES ; do ssh $HADOOP_SSH_OPTS $slave $"${@// /\\ }" \   2>&1 | sed "s/^/$slave: /" & if [ "$HADOOP_SLAVE_SLEEP" != "" ]; then   sleep $HADOOP_SLAVE_SLEEP fidone

我们手动启动每一个进程
主机启动namenode

    hadoop-daemon.sh start namenode

所有机器手动启动datnode

    hadoop-daemon.sh start datanode

在主机上手动启动datanode

    ssh s202 “source /etc/profile && hadoop-daemon.sh start datanode”

在主机上脚本启动所有datanode

    hadoop-daemons.sh start datanode

在主机启动secondarynamenode

主机启动resourcemanager

    yarn-daemon.sh start resourcemanager

所有机器启动nodemanager

    yarn-daemon.sh start nodemanager

在主机启动所有的nodemanager

    yarn-daemons.sh start nodemanagerstart-dfs.sh=NN,DNs,2NNstart-yarn.sh=RM,NMsstart-all.sh= start-dfs.sh && start-yarn.sh
原创粉丝点击