Hadoop分布式集群搭建

Hadoop分布式集群和前面的伪分布式安装方法类似,Hadoop用户创建,ssh配置,java环境安装,Hadoop安装等过程查看前一篇:Hadoop的安装和使用

下面在两台物理机上搭建集群环境,一台机器作为Master节点,一台机器作为Slave节点,3台和3台以上机器构成的集群搭建,方法也类似。

1 网络配置

1.1 修改主机名

为了方便区分Master节点和Slave节点,先把两台机器的主机名修改为Master和Slave1。

$ sudo vim /etc/hostname

直接修改,重启即可。

1.2 在hosts文件中添加IP与主机名的映射关系

$ sudo vim /etc/hosts

Master 和Slave1两台机器都要修改

192.168.0.115  Master
192.168.0.114  Slave1

【注意】在hosts文件中 127.0.0.1 对应的主机名只能是一个 localhost,多余的将其删除,否则会报错

测试是否修改成功,在两台机器上测试,是否能够相互ping通。

$ ping Master -c 3   # 只ping 3次
$ ping Slave1 -c 3

2 设置SSH无密码登录节点

要让Master能够通过SSH无密码登录各个Slave节点。

因为修改过主机名,所以之前生成的公钥,需要删掉,重新生成。

在Master上执行如下命令:

cd ~/.ssh              # 如果没有该目录,先执行一次ssh localhost
rm ./id_rsa*           # 删除之前生成的公匙(如果已经存在)
ssh-keygen -t rsa       # 执行该命令后,遇到提示信息,一直按回车就可以
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

接着将Master中的id_rsa.pub文件复制到Slave1中

$ scp ~/.ssh/id_rsa.pub hadoop@Slave1:/home/hadoop/

在Slave1中执行如下命令:

$ mkdir ~/.ssh       # 如果不存在该文件夹需先创建
$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
$ rm ~/id_rsa.pub    # 用完以后就可以删掉

在Master中验证是否可以无密码登录Slave1:$ ssh Slave1,如果成功,则配置完成。

3 配置PATH变量

~/.bashrc文件中添加如下内容,并$ source ~/.bashrc使其生效

export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin

4 配置集群

修改/usr/local/hadoop/etc/hadoop/下的文件

4.1 修改slaves文件

slaves文件的内容修改为:Slave1

4.2 修改core-site.xml文件

内容修改为:

<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://Master:9000</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>file:/usr/local/hadoop/tmp</value>
                <description>Abase for other temporary directories.</description>
        </property>
</configuration>

4.3 修改hdfs-site.xml文件

Hadoop的分布式文件系统HDFS一般采用冗余存储,一份文件通常保存3份副本,但是这里只设置了一个Slave节点,所以dfs.replication的值还是设置为1。
具体内容如下:

<configuration>
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>Master:50090</value>
        </property>
        <property>
                <name>dfs.replication</name>
                <value>1</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/usr/local/hadoop/tmp/dfs/name</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/usr/local/hadoop/tmp/dfs/data</value>
        </property>
</configuration>

4.4 修改mapred-site.xml文件

/usr/local/hadoop/etc/hadoop目录下的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>Master:10020</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>Master:19888</value>
        </property>
</configuration>

4.5 修改yarn-site.xml文件

内容如下:

<configuration>
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>Master</value>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
</configuration>

以上配置完成后,Master节点就配置完成了。
如果之前运行过伪分布式模式,现在先删除运行后的临时文件。然后把Master下的hadoop文件夹打包压缩,复制到Slave1。

$ cd /usr/local
$ sudo rm -r ./hadoop/tmp     # 删除 Hadoop 临时文件
$ sudo rm -r ./hadoop/logs/*   # 删除日志文件
$ tar -zcf ~/hadoop.master.tar.gz ./hadoop   # 先压缩再复制
$ cd ~
$ scp ./hadoop.master.tar.gz Slave1:/home/hadoop

4.6 配置Slave1节点

$ sudo rm -r /usr/local/hadoop    # 删掉旧的(如果存在)
$ sudo tar -zxf ~/hadoop.master.tar.gz -C /usr/local
$ sudo chown -R hadoop /usr/local/hadoop

如果还要其他节点,执行相同的操作即可。

5 启动Hadoop集群

在Master上执行。
首次运行需要,格式化名称节点./bin/hdfs namenode -format
然后就可以启动hadoop了

$ ./sbin/start-dfs.sh
$ ./sbin/start-yarn.sh
$ ./sbin/mr-jobhistory-daemon.sh start historyserver

使用jps查看启动的各个节点,缺少任何进程,都表示出错。

$ jps
3585 JobHistoryServer
2938 NameNode
3148 SecondaryNameNode
3308 ResourceManager
3629 Jps

打开浏览器输入:http://master:50070/ 就可以查看名称节点和数据节点的状态。

6 执行分布式实例

创建HDFS上的用户目录

$ hdfs dfs -mkdir -p /user/hadoop

在HDFS中创建input目录,并把/usr/local/hadoop/etc/hadoop目录中的配置文件作为输入文件复制到input目录中

$ hdfs dfs -mkdir input
$ hdfs dfs -put /usr/local/hadoop/etc/hadoop/*.xml input

运行MapReduce作业

$ hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input outpu t 'dfs[a-z.]+'

运行成功如下:

$ hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input outpu t 'dfs[a-z.]+'
19/01/12 04:58:49 INFO client.RMProxy: Connecting to ResourceManager at Master/192.168.0.115:8032
19/01/12 04:58:51 INFO input.FileInputFormat: Total input paths to process : 9
19/01/12 04:58:51 INFO mapreduce.JobSubmitter: number of splits:9
19/01/12 04:58:51 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1547285975031_0001
19/01/12 04:58:53 INFO impl.YarnClientImpl: Submitted application application_1547285975031_0001
19/01/12 04:58:53 INFO mapreduce.Job: The url to track the job: http://Master:8088/proxy/application_1547285975031_0001/
19/01/12 04:58:53 INFO mapreduce.Job: Running job: job_1547285975031_0001
19/01/12 04:59:21 INFO mapreduce.Job: Job job_1547285975031_0001 running in uber mode : false
19/01/12 04:59:21 INFO mapreduce.Job:  map 0% reduce 0%
19/01/12 05:02:09 INFO mapreduce.Job:  map 33% reduce 0%
19/01/12 05:02:10 INFO mapreduce.Job:  map 67% reduce 0%
19/01/12 05:02:24 INFO mapreduce.Job:  map 78% reduce 0%
19/01/12 05:02:25 INFO mapreduce.Job:  map 100% reduce 0%
19/01/12 05:02:27 INFO mapreduce.Job:  map 100% reduce 100%
19/01/12 05:02:27 INFO mapreduce.Job: Job job_1547285975031_0001 completed successfully

查看输出结果

$ hdfs dfs -cat output/*
1       dfsadmin
1       dfs.replication
1       dfs.namenode.secondary.http
1       dfs.namenode.name.dir
1       dfs.datanode.data.dir

关闭集群

$ stop-yarn.sh
$ stop-dfs.sh
$ mr-jobhistory-daemon.sh stop historyserver
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,039评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,223评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,916评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,009评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,030评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,011评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,934评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,754评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,202评论 1 309
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,433评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,590评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,321评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,917评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,568评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,738评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,583评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,482评论 2 352

推荐阅读更多精彩内容