hadoop集群配置启动及编程

来源:互联网 发布:apache ab测试百度 编辑:程序博客网 时间:2024/05/29 04:46

hadoop集群配置启动及编程

1.      环境准备

Master: (1台)

CPU:64位

操作系统:ubuntu14.04

IP地址:192.168.177.10

 

Slave: (2台)

CPU:64位

操作系统:ubuntu14.04

IP地址:192.168.177.10

&

IP地址:192.168.177.10

 

故而,主机IP为10的机器,即做slave又做master。

 

2.      软件准备 

2.1 在10,11两台机器上创建hadoop组及hadoop用户

#groupadd hadoop

#adduser  --ingroup hadoop hadoop(分别给每一台主机创建用户)

修改/etc/sudoers文件,给hadoop用户赋予root用户的权限在

“root  ALL=(ALL:ALL) ALL”行之后加入一行:

”hadoop  ALL=(ALL:ALL) ALL”


2.2 在10,11两台机器上都安装ssh相关软件:

$apt-get install openssh-server

 

2.3 配置10,11两台机器的/etc/hosts文件:

$cat /etc/hosts

192.168.177.10  master

192.168.177.11  slave


2.4 配置主机10无密码访问11

进入10机器控制台:

$ su hadoop

$ ssh-keygen -t rsa

多次回车之后,在~/.ssh下面生成两个文件:id_rsa,id_rsa.pub

$ cd ~/.ssh

$ cat id_rsa.pub >> authorized_keys

$ scp id_rsa.pub hadoop@slave:~/.ssh/authorized_keys

 

此后,机器10即可无密码访问11.

3.      Hadoop安装与配置

3.1到apache官网下载hadoop压缩包:hadoop-2.6.4.tar.gz,将压缩包解压到/home/hadoop目录下:

进入到10机器:

$ cd ~

$ wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.6.4/hadoop-2.6.4.tar.gz

$ tar zxvf hadoop-2.6.4.tar.gz

至此在/home/hadoop目录下面生成目录hadoop-2.6.4

 

3.2  配置操作系统环境变量

$ vim /etc/profile

添加以下内容:

exportHADOOP_HOME=/home/hadoop/hadoop-2.6.4

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

 

$source /etc/profile

 

3.3  hadoop相关配置文件

3.3.1         配置hadoop-env.sh文件

$ vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh

添加:

exportJAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

注:/usr/lib/jvm/java-7-openjdk-amd64是我自己的jdk路径,根据各自的环境配置。

 

3.3.2         配置core-site.xml

$ mkdir –p /home/hadoop/hadoop-2.6.4/tmp

$ vim $HADOOP_HOME/etc/hadoop/core-site.xml

<configuration>

   <property>

       <name>fs.default.name</name>

       <value>hdfs://192.168.177.10:9000</value>

   </property>

   <property>

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

       <value>/home/hadoop/hadoop-2.6.4/tmp</value>

   </property>

</configuration>

 

3.3.3         配置hdfs-site.xml

$ vim $HADOOP_HOME/etc/hadoop/hdfs-site.xml

<configuration>

<property>

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

   <value>192.168.177.10:9001</value>

</property>

<property>

   <name>dfs.replication</name>

   <value>2</value>

</property>

<property>

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

   <value>/home/hadoop/hadoop-2.6.4/tmp/dfs/name</value>

</property>

<property>

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

   <value>/home/hadoop/hadoop-2.6.4/tmp/dfs/data</value>

</property>

<property>

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

   <value>true</value>

</property>

</configuration>

 

3.3.4         配置mapred-site.xml

$ vim $HADOOP_HOME/etc/hadoop/mapred-site.xml

<configuration>

 <property>

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

   <value>yarn</value>

 </property>

</configuration>

 

3.3.5         配置yarn-site.xml

$ vim $HADOOP_HOME/etc/hadoop/yarn-site.xml

<configuration>

<property>

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

 <value>mapreduce_shuffle</value>

</property>

<property>

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

 <value>master:8032</value>

</property>

<property>

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

 <value>master:8030</value>

</property>

<property>

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

 <value>master:8031</value>

</property>

</configuration>

 

3.3.6         拷贝hadoop到slave节点

$ cd ~/hadoop

$ scp –r hadoop-2.6.4 hadoop@slave:~/hadoop

 

至此,两台机器的hadoop安全配置完成。

 

3.4  hadoop启动

3.4.1         格式化hdfs

$ hdfs namenode -format

3.4.2         启动hdfs

$ start-dfs.sh

3.4.3         启动yarn

$ start-yarn.sh

 

自此,hadoop分别在master与slave上面启动起来,可以在两台机器上用jps查询相关进程。

 

3.5  hadoop mapreduce编程

3.5.1         从hadoop的share目录下找到源码压缩包,解压后,获取WordCount.java文件,自己写一个makefile

$ mkdir -p $HADOOP_HOME/hadoop-2.6.4/lihan/demos/wordcount

$ ls -l

-rw-rw-r-- 1 hadoop hadoop  444 Jun 24 16:18 Makefile

-rw-r--r-- 1 hadoop hadoop 3299 Jun 2415:48 WordCount.java

 

$ cat Makefile

#

# makefile call shell's variable:$(HADOOP_HOME)

#

 

lib0=$(HADOOP_HOME)/share/hadoop/common/hadoop-common-2.6.4.jar

lib1=$(HADOOP_HOME)/share/hadoop/common/lib/commons-cli-1.2.jar

lib2=$(HADOOP_HOME)/share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.6.4.jar

 

build: *.java

         echo---build---

         javac-cp $(lib0):$(lib1):$(lib2) $^

         echo---build end---

jar:

         jar-cvf wc.jar *.class

run:

         hadoopjar wc.jar WordCount /input /output

 

编译打包:

$ make build

$ make jar

 

运行准备:

$ hdfs dfs –mkdir /input

$ hdfs dfs –mkdir /output

$ hdfs dfs –copyFromLocal *.txt /input

 

$ make run

 

等待mapreduce输出结果

---over!---

0 0