3台机器配置hadoop-2.7.3集群

环境介绍

三台主机,主机名和ip分别为:
ubuntu1  10.3.19.171
ubuntu2  10.3.19.172
ubuntu3  10.3.19.173
三台主机的登录用户名是bigdata,home目录是/home/bigdata
现在三台主机上部署hadoop集群, ubuntu1作为namenode, ubuntu1 ubuntu2 ubuntu3作为datanode

安装环境设置

配置各主机名和hosts, 安装JAVA

修改各主机名的配置, 例如ubuntu1的主机名配置为:

bigdata@ubuntu1:~$ cat /etc/hostname
ubuntu1

ubuntu2 和 ubuntu3分别配置为ubuntu2 和 ubuntu3

在各主机上配置hosts列表, 三台主机的配置相同,如下红色部分:

bigdata@ubuntu1:~$ cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 ubuntu

# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

10.3.19.171 ubuntu1
10.3.19.172 ubuntu2
10.3.19.173 ubuntu3

安装配置java

三台主机都需要安装java, ubuntu1下java安装路径如下, 其它两台主机,也是安装到~/usr/jdk1.8.0_25目录下

bigdata@ubuntu1:~/usr/jdk1.8.0_131$ pwd
/home/bigdata/usr/jdk1.8.0_131

配置JAVA相关环境变量

export JAVA_HOME=/home/bigdata/usr/jdk1.8.0_131
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib/jt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH

配置三台主机ssh免密码登录

step1:生成公钥/私钥对

分别在ubuntu1 ubuntu2 ubuntu3三台主机上,执行如下命令生成公钥/私钥对

bigdata@ubuntu1:~$ ssh-keygen -t rsa -P ''

按多次回车键,它在/home/bigdata下生成.ssh目录,.ssh下有id_rsa和id_rsa.pub。-P表示密码,-P '' 就表示空密码。

step2:将公钥添加到各主机,使得各主机可以ssh免密码登录

在ubuntu1上查看.ssh/authorized_keys文件是否存在,如果不存在则创建

bigdata@ubuntu1:~$ ls .ssh/authorized_keys
.ssh/authorized_keys

修改.ssh/authorized_keys文件权限为600

bigdata@ubuntu1:~$ chmod 600 .ssh/authorized_keys

将ubuntu1 ubuntu2 ubuntu3三台主机 /home/bigdata/.ssh/id_rsa.pub 中的内容(公钥)拷贝到ubuntu1主机的/home/bigdata/.ssh/authorized_keys文件中。

拷贝后/home/bigdata/.ssh/authorized_keys文件的内容类似如下:

bigdata@ubuntu1:~$ cat .ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCrI0nqIW4P7mPbKytk/wo0d1utVQCIgDGQjUZDgVv1Ll9y6PoRtffTqDQ5cHLHnqapsdO/RAfDFUBPaDAHHwZeQ/sKP/c9GWbr9PxjH2dzzVcB6VOll3T0vTLAxMsIevtBj/fN5HRdZTasQeLtibY5CQvGF+owWCWtWp7cEdewL2fgPCFIVijFLqGLtAvLJrpcbnwoY0WgIivviK9QD2Ymm/kC5pAK/5/QljYldyOEiPbTeRLE94b4G7XWPDhIv/1SKLvnwQoy/Zs0HokG/jzW3VXSLJ9aecg8JfTp3q2Ngcm3hm/chfWvxfCRC5DnmTzlKg+HxsWp7M3ku3saR2Kv bigdata@ubuntu1
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7E/gMzpHo4YXEmIBMau+H1Jw01UVEvUSWWy1zz6v0xXQbSQt2fKm1Iwm9XoijLWrv0PWZp44XdPNAP0o+2pK2y8G3t7qMMbAIu9LSe7No51Npz450HMbKlXtZ2ED3Zd/09SP+ekpd4z8IiMeZGUQNCsdRe0jgIbP8QtEkg7MO7WrI9d54dBMzjWPqrxYcSfP3yf65WXGwTcxbmbaFpuFSMvx2c+OsA1u1wemNk0r1/f1Q5Qu4GavOX0ZQojUjz1z2CJe9Hm+hNtpgrIrmnzPk3+4qw/8udUkDGYuZD0G9J2xPmD1qwu5oz29a9b/2eMqStQu7NWoDfCCpoa6ZrHuv bigdata@ubuntu2
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMRgOi/sWQHXRgL24VqDgEncOxmoV9IlmjVhC9Mhbx1vpRWfLakGzxQdmyN6X7xJxZjc3O6CcJbVSZTBnAd45PpX5EhQ/QBa+ycz9Cfl44bVyEaeb2mAtcTbILlepNgvdT+MgVxDkkL+7bL9XMwkxptmQozTY7RTRd3MHiXOk+AoDMt9iJrpGyhjSpR5WEL7jG9TAakOlnBSyTPPnjPV+SerN3DEG/KSg3vAED9Pimzka7MM6syjMVypVt5AZhDmc5bTXPwq6+WTupspI6MdXkeKn6tTCZGhE1Qwvf8nP0Thope6fvrbVWTTOf4RGW8/f9zXyWy2PC9Pp2h5AIihZf bigdata@ubuntu3

尝试在ubuntu1上无密码登录ubuntu2, 第一次可能需要输入密码,后续登录不需要。

bigdata@ubuntu1:~$ ssh ubuntu2
Welcome to Ubuntu 16.04 LTS (GNU/Linux 4.4.0-21-generic x86_64)

* Documentation: https://help.ubuntu.com/
Last login: Tue May 2 19:56:34 2017 from 10.3.19.171
bigdata@ubuntu2:~$

将主机ubuntu1的公钥文件/home/bigdata/.ssh/authorized_keys拷贝到ubuntu2 ubuntu3主机对应目录。

在各主机上,分别执行ssh命令免密码登录另外两台主机,第一次可能需要输入密码,后续不需要。

至此,三台主机可以互相免密码登录。

安装hadoop到一台主机ubuntu1上

我的hadoop部署在目录/home/bigdata/run目录下,在ubuntu1上部署hadoop先。操作部署如下:

step1:解压hadoop-2.7.3.tar.gz,并将其拷贝到run目录下

bigdata@ubuntu1:~$ tar -zxvf hadoop-2.7.3.tar.gz

bigdata@ubuntu1:~$ mv hadoop-2.7.3 /home/bigdata/run/

bigdata@ubuntu1:~$ ln -s /home/bigdata/run/hadoop-2.7.3 /home/bigdata/run/hadoop

step2: 配置core-site.xml

bigdata@ubuntu1:~$ cd /home/bigdata/run/hadoop/etc/hadoop
bigdata@ubuntu1:~/run/hadoop/etc/hadoop
bigdata@ubuntu1:~/run/hadoop/etc/hadoop$ cat core-site.xml
......
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://ubuntu1:9000</value>
</property>
</configuration>

step3:配置hdfs-site.xml

bigdata@ubuntu1:~/run/hadoop/etc/hadoop$ cat hdfs-site.xml
.......
<configuration>

<property>
<name>dfs.replication</name>
<value>3</value>
</property>

<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/bigdata/run/hadoop/tmp/name</value>
</property>

<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/bigdata/run/hadoop/tmp/data</value>
</property>

<property>
<name>dfs.http.address</name>
<value>ubuntu1:50070</value>
</property>

<property>
<name>dfs.datanode.http.address</name>
<value>ubuntu1:50075</value>
</property>

</configuration>

step4:配置mapred-site.xml

bigdata@ubuntu1:~/run/hadoop/etc/hadoop$ cat mapred-site.xml
......
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

</configuration>

step5:配置yarn-site.xml

bigdata@ubuntu1:~/run/hadoop/etc/hadoop$ cat yarn-site.xml
......
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>ubuntu1</value>
</property>

<property>
<name>yarn.nodemanager.hostname</name>
<value>ubuntu1</value>
</property>

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

step6: 配置hadoop-env.sh,红色部分,配置JAVA_HOME,即jdk的安装路径

bigdata@ubuntu1:~/run/hadoop/etc/hadoop$ cat hadoop-env.sh
......
# The java implementation to use.
#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/home/bigdata/usr/jdk1.8.0_131
......

step7: 创建namenode和datanode数据所在目录

bigdata@ubuntu1:~$ mkdir /home/bigdata/run/hadoop/tmp/name
bigdata@ubuntu1:~$ mkdir /home/bigdata/run/hadoop/tmp/data

这两路径已配置到了hdfs-site.xml配置文件中。

至此在ubuntu1上部署hadoop已经完成了。接下来,将hadoop部署到ubuntu2和ubuntu3两台主机上。

安装hadoop到主机ubuntu2和ubuntu3

为了方便, 直接将ubuntu1上的/home/bigdata/run/hadoop-2.7.3目录打包,拷贝到ubuntu1和ubuntu2主机上。

需要注意, ubuntu2和ubuntu3主机的目录结构,要同ubuntu1主机一样,所以需要将hadoop部署到ubuntu2和ubuntu3的/home/bigdata/run目录下

bigdata@ubuntu1:~/run$ tar -zcvf hadoop-2.7.3.tar.gz hadoop-2.7.3/
scp hadoop-2.7.3.tar.gz ubuntu2:/run/
scp hadoop-2.7.3.tar.gz ubuntu3:/run/

在ubuntu2 ubuntu3主机上解压,并创建软链接,以下是ubuntu2上的操作,在ubuntu3操作类似。

bigdata@ubuntu2:~/run$ tar -zxvf hadoop-2.7.3.tar.gz 
bigdata@ubuntu2:~$ ln -s /home/bigdata/run/hadoop-2.7.3 /home/bigdata/run/hadoop

接下来修改配置文件。因ubuntu2和ubuntu3上修改配置文件完全一样,以下只描述ubuntu2上的修改过程。

step1:修改hdfs-site.xml, 注释掉红色部分

bigdata@ubuntu2:~/run/hadoop/etc/hadoop$ cat hdfs-site.xml
......
<configuration>

<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!--
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/bigdata/run/hadoop/tmp/name</value>
</property>
-->
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/bigdata/run/hadoop/tmp/data</value>
</property>

<!--
<property>
<name>dfs.http.address</name>
<value>ubuntu1:50070</value>
</property>

<property>
<name>dfs.datanode.http.address</name>
<value>ubuntu1:50075</value>
</property>
-->

</configuration>

step2:修改mapred-site.xml, 注释掉红色部分

bigdata@ubuntu2:~/run/hadoop/etc/hadoop$ cat mapred-site.xml
......
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

ubuntu3上主机也做同样的修改。至此hadoop已经部署到三台主机。

启动hadoop集群

step1:格式化namenode

bigdata@ubuntu1:~/run/hadoop/bin$ cd /home/bigdata/run/hadoop/bin
bigdata@ubuntu1:~/run/hadoop/bin$ ./hadoop namenode -format

step2:启动,只需要在ubuntu1主机上执行启动脚本即可

bigdata@ubuntu1:~$ cd /home/bigdata/run/hadoop/sbin
bigdata@ubuntu1:~/run/hadoop/sbin$ ./start-all.sh

step3:检查进程是否已启动

ubuntu1主机

bigdata@ubuntu1:~/run/hadoop/sbin$ jps -l
1827 org.apache.hadoop.yarn.server.nodemanager.NodeManager
1494 org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode
1225 org.apache.hadoop.hdfs.server.namenode.NameNode
1707 org.apache.hadoop.yarn.server.resourcemanager.ResourceManager
2110 sun.tools.jps.Jps
1343 org.apache.hadoop.hdfs.server.datanode.DataNode

ubuntu2和ubuntu3主机

bigdata@ubuntu2:~/run/hadoop/etc/hadoop$ jps -l
983 org.apache.hadoop.hdfs.server.datanode.DataNode
1166 sun.tools.jps.Jps

step4. 访问hadoop的web页面

访问 http://10.3.19.171:50070



测试hadoop

为了测试方便,设置环境变量如下,设置后使其生效:

export HADOOP_PREFIX=/home/bigdata/run/hadoop
export HADOOP_HOME=$HADOOP_PREFIX
export HADOOP_COMMON_HOME=$HADOOP_PREFIX
export HADOOP_CONF_DIR=$HADOOP_PREFIX/etc/hadoop
export HADOOP_HDFS_HOME=$HADOOP_PREFIX
export HADOOP_MAPRED_HOME=$HADOOP_PREFIX
export HADOOP_YARN_HOME=$HADOOP_PREFIX
export PATH=$PATH:$HADOOP_PREFIX/sbin:$HADOOP_PREFIX/bin

测试操作如下:

step1:本地文件夹/home/bigdata/下创建文件test.txt,内容如下:

bigdata@ubuntu1:~$ cat test.txt
hello world

step2:hdfs上创建文件夹test,命令如下:

bigdata@ubuntu1:~$ hdfs dfs -mkdir /test

step3:拷贝test.txt到hdfs的test目录下

bigdata@ubuntu1:~$ hdfs dfs -copyFromLocal /home/bigdata/test.txt /test/test.txt

bigdata@ubuntu1:~$ hdfs dfs -cat /test/test.txt

step4:执行示例代码中的wordcount(此示例实现统计单词数量功能),将结果输出到output

bigdata@ubuntu1:~$ hadoop jar /home/bigdata/run/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /test/test.txt /output

step5:在output下查看输出结果文件

bigdata@ubuntu1:~$ hdfs dfs -ls /output
Found 2 items
-rw-r--r-- 3 bigdata supergroup 0 2017-05-16 00:06 /output/_SUCCESS
-rw-r--r-- 3 bigdata supergroup 16 2017-05-16 00:06 /output/part-r-00000
bigdata@ubuntu1:~$ hdfs dfs -cat /output/part-r-00000
hello 1
world 1


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值