(二)、伪分布式环境搭建

来源:互联网 发布:域名301重定向新网 编辑:程序博客网 时间:2024/05/20 19:33

安装好一个 linux. 这里使用 Ubuntu, 参考 Ubuntu

安装好后, 需要做一些设置:

1. 修改固定 IP 、主机名 及 hosts

sudo su 进入 root 权限.

vim /etc/network/interfaces, 编辑 interfaces 文件.

auto loiface lo inet loopbackauto eth0iface eth0 inet staticaddress 192.168.31.200netmask 255.255.255.0gateway 192.168.31.1

初始文件只有前面两行, 后面的是要添加的内容.

vim /etc/resolv.conf, 编辑 DNS 解析文件.

nameserver 8.8.8.8nameserver 8.8.4.4nameserver 192.168.31.1

改完上面, 如果重启的话, DNS 还是会变为原来的样子, 所以要让其永久改变, 因此, 执行:
vim /etc/resolvconf/resolv.conf.d/base.
输入和 DNS 解析文件相同的内容.

vim /etc/hostname, 修改主机名.

vim /etc/hosts, 修改 [ip 域名] 对应表.

127.0.0.1       localhost192.168.31.200  itcast01

2. 关闭防火墙

iptables 是 linux 下一个简单实用的防火墙组件.
service iptables status, 先检查下 iptables 状态, 确认是否安装.
如果提示: iptables:unrecognized service, 则没有安装 iptables, 那就别管它了;
如果 iptables 是安装了的, 那么就要查看它的状态, 及是否自启动等等.
暂且略过.

都设置好后, reboot 重启系统, ifconfig 查看 ip 是否变为我们设置的, hostname 查看主机名.

3. 安装 JDK

访问 oracle 官网 : http://www.oracle.com/index.html

我们安装的 jdk 1.7 版本, 因为 1.8 版本太新, 和 hadoop 的兼容性不是很好.

向下翻到最后:

下载好后, 弄到 Ubuntu 里, 解压, 然后在 usr 目录下新建一个 java 目录, 把解压好的文件复制进去.

注意, 在接下来的操作前, 需要将用户切回 itcast (命令: sudo itcat)

root@itcast01:/home/itcast# mkdir /usr/javaroot@itcast01:/home/itcast# mv 桌面/jdk1.7.0_80/ /usr/java/vim ~/.bashrc

打开 VIM 编辑器后, 翻到最后一行, 在后面添加:

export JAVA_HOME=/usr/java/jdk1.7.0_80export PATH=$PATH:$JAVA_HOME/bin

“=”左右两边不能有空格.

source ~/.bashrc

最后刷新下文件.

此时, 不管在哪个目录输入 java 都可以找到执行文件.

4. 下载安装 Hadoop

访问: http://archive.apache.org/dist/, apache 的所有项目都在这里.

下载完成后, 拖到 Ubuntu 桌面.

mkdir /usr/itcast, 创建一个文件夹.

cd 桌面, 进入桌面目录.

tar -zxvf hadoop-2.7.1.tar.gz -C /usr/itcast (-z 处理gz, x 释放/c 压缩, v 显示详情, f 解压哪个文件)

接下来开始配置 hadoop, 对于 hadoop 2.0+, 有五个文件需要配置:

注意, 在此步操作前, 需要将用户切回 itcast (命令: sudo itcat)

linux 默认权限是 644, 需要修改成 777 (命令: sudo chmod -R 777 /usr/itcast/hadoop-2.7.1/)

Ubuntu 默认并没有安装 ssh 服务, 需要自己手动安装 openssh-server, 判断是否安装 ssh 服务, 可以通过如下命令进行: ssh localhost.

安装命令: sudo apt-get install openssh-server


cd /usr/itcast/hadoop-2.7.1/etc/hadoop

vim hadoop-env.sh
定位到 26% 左右, 找到

export JAVA_HOME=${JAVA_HOME}

改成

export JAVA_HOME=/usr/java/jdk1.7.0_80 (可以在 vim 的命令模式下, 通过 echo $JAVA_HOME 查看路径)

vim core-site.xml

<configuration>        <property>        <!--用来指定 HDFS 的老大(NameNode)的地址-->                <name>fs.defaultFS</name>                <!--itcast01 是这台主机名, 要在 hosts 里设置了映射才可以, 不然只能写 ip-->                <value>hdfs://itcast01:9000</value>        </property>        <property>        <!--用来指定 hadoop 运行时产生文件的存放目录-->                <name>hadoop.tmp.dir</name>                <value>/usr/itcast/hadoop-2.7.1/tmp</value>        </property></configuration>

vim hdfs-site.xml

<configuration>        <property>        <!--指定 HDFS 保存数据的副本个数, 这里因为是伪分布, 所以是 1 份-->                <name>dfs.replication</name>                <value>1</value>        </property></configuration>

mv mapred-site.xml.template mapred-site.xml

vim mapred-site.xml

<configuration>        <property>        <!--告诉 Hadoop MR 要运行在 yarn 上-->                <name>mapreduce.framework.name</name>                <value>yarn</value>        </property></configuration>

vim yarn-site.xml

<configuration>        <property>            <!--NodeManager 获取数据的方式是shuffle-->                       <name>yarn.nodemanager.aux-services</name>                <value>mapreduce_shuffle</value>        </property>        <property>            <!--指定 YARN 的老大(ResourceManager 它负责资源的调度、分配)的地址-->                 <name>yarn.resourcemanager.hostname</name>                <value>itcast01</value>        </property></configuration>

这五个文件配置好后, 将下来要修改环境变量(确保用户是 itcast), 命令: **vim ~/.bashrc

export JAVA_HOME=/usr/java/jdk1.7.0_80export HADOOP_HOME=/usr/itcast/hadoop-2.7.1export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin

然后刷新下 bashrc, 命令: source ~/.bashrc
退回根目录, 测试下 hadoop 命令: hadoop version

初始化 HDFS
命令: hdfs namenode -format
以前是用 hdfs namenode –format, 格式化后, hadoop 根目录下就多出了 tmp 目录(在上一步第二个配置文件里设置的).

启动 hadoop 服务

cd /usr/itcast/hadoop-2.7.1/sbin/./start-all.sh

输入一堆 yes 和 密码后, 输入 * jps*, 如果看到 NameNode、ResourceManager、NodeManager、SecondaryNameNode 和 DataNod 六个进程, 就表示启动成功了.

不过有点需要注意, ./start-all.sh 和 hdfs namenode –format 一样, 也是个过时命令, 新的命令是 start-dfs.sh start-yarn.sh.

5. 测试环境

itcast01:50070 – hdfs 管理界面

itcast01:8088 – yarn 管理界面

先测试 hdfs – http://itcast01:50070

hadoop fs -put /home/itcast/桌面/hadoop-2.7.1.tar.gz hdfs://itcast01:9000/hadoop
上传文件到 hdfs://itcast01:9000/ 并命名为 hadoop
同样功能的命令除了 put 还有 copyFromLocal (过时).

hadoop fs -get hdfs://itcast01:9000/hadoop /home/itcast/桌面/hadoop.tar.gz
下载文件到桌面, 并命名为 hadoop.tar.gz

执行命令的时候, 可能会出现提示: WARN hdfs.DFSClient: DFSInputStream has been closed already
不用管它, apache 也给出了说明:

再测试 mr(jar 包) 和 yarn

MR 给出了一些测试 jar, 它们在: /usr/itcast/hadoop-2.7.1/share/hadoop/mapreduce 目录下.

cd /usr/itcast/hadoop-2.7.1/share/hadoop/mapreduce

创建一个文件, 输入内容

vim words.txt

hello tomhello jerryhello kittyhello worldhello martin

所有的 MR 都是执行在 hdfs 上的, 所以要先上传文件.
hadoop fs -put words.txt hdfs://itcast01:9000/words.txt

/usr/itcast/hadoop-2.7.1/share/hadoop/mapreduce 目录下有个 hadoop-mapreduce-examples-2.7.1.jar, 里面有个 wordcount, 可以用来统计单词个数.
hadoop jar hadoop-mapreduce-examples-2.7.1.jar wordcount hdfs://itcast01:9000/words.txt hdfs://itcast01:9000/result.txt
第一个参数是待统计文件, 第二个参数是保存结果的文件路径.

执行完毕后, 查看下 hdfs:

hadoop fs -ls hdfs://itcast01:9000/

Found 4 items-rw-r--r-- 1 itcast supergroup 210606807 2015-09-19 11:02 hdfs://itcast01:9000/hadoopdrwxr-xr-x - itcast supergroup 0 2015-09-19 11:47 hdfs://itcast01:9000/result.txtdrwx------ - itcast supergroup 0 2015-09-19 11:46 hdfs://itcast01:9000/tmp-rw-r--r-- 1 itcast supergroup 59 2015-09-19 11:42 hdfs://itcast01:9000/words.txt

也可以直接通过 浏览器 查看:

第一个 _SUCCESS 表示执行结果, 这里是成功, 第二个是内容, 把第二个下载下来并打开:

hello 5jerry 1kitty 1martin 1tom 1world 1
0 0
原创粉丝点击