讲了这么久的理论,话说实践是检验真理的唯一标准,我们来搭一个Hadoop环境。通过实践加深对Hadoop复杂理论的理解,通过实践再反过来看理论,也许会有更深的认知。今天我们用天翼云3.0环境,搭建最小规模的Hadoop。我们一步一步来,你会跟上。
一、申请两台云主机,分别用于Hadoop的Master节点、Node节点
为了省点money,我们申请1vCpu、2G内存,40G系统盘的CentOS 7.3主机两台。
为利于后期两台主机的内网通信,建议这两台主机放到同一个vpc,同一个安全组中。
二、通过公网弹性IP,分别登陆CentOS进行JAVA、Hadoop安装和配置。
1、登陆Master节点,修改本地hosts,用于后期的内网通信连接。192.168的内网地址需要根据您的云主机真实内网地址修改。
[root@ecs-hadoop-0001 ~]# vi /etc/hosts
192.168.189.60 master
192.168.189.80 node1
修改完成后,按同样的方法修改Node节点。
2、配置两台云主机的SSH无密码登录,用于Master、Node节点的hadoop通信。
首先登录master节点
[root@ecs-hadoop-0001 ~]# ssh-keygen 输入后一直按回车即可
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): ^C
[root@ecs-hadoop-0001 ~]# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[root@ecs-hadoop-0001 ~]# scp ~/.ssh/id_rsa.pub root@node1:~/.ssh
id_rsa.pub 100% 402 0.4KB/s 00:00
登陆node节点,将master的授权写入node节点中
[root@ecs-hadoop-0002]#cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys
3、安装Java JDK,在master、node节点分别操作
下载JDK至CentOS中,并解压
[root@ecs-hadoop-0001 ~]# tar -zxf jdk-8u1.8-linux-x64.tar.gz -C ../
配置环境变量
[root@ecs-hadoop-0001 ~]# vi /etc/profile
export JAVA_HOME=/jdk1.8.0_201
export PATH=$JAVA_HOME/bin:$PATH
4、安装hadoop,在master、node节点分别操作
[root@ecs-hadoop-0001 ~]# tar -zxf hadoop-2.7.7.tar.gz -C ../
配置环境变量
[root@ecs-hadoop-0001 ~]# vi /etc/profile
export JAVA_HOME=/jdk1.8.0_201
export HADOOP_HOME=/hadoop-2.7.7
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
5、配置hadoop
vi core-site.xml 修改hadoop的core-site配置
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/hadoop-2.7.7/tmp</value> //临时目录
</property>
<property>
<name>fs.defaultFS</name> //hdfs的数据通信内网端口
<value>hdfs://master:9000</value>
</property>
修改hdfs-site.xml如下:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value> //hdfs只要一份副本
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/hadoop-2.7.7/tmp/dfs/name</value> //hdfs namenode的临时目录
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/hadoop-2.7.7/tmp/dfs/data</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
将mapred-site.xml.template拷贝一份并命名为mapred-site.xml,用cp命令。
修改mapred-site.xml如下:
<configuration>
<property>
<name>mapreduce.framework.name</name> //指定mapreduce的调度框架为yarn
<value>yarn</value>
</property>
</configuration>
修改yarn-site.xml如下:
<!-- Site specific YARN configuration properties -->
<property>
<!-- 指定YARN的resourcemanager的地址(伪分布式时就是主机名,aliyun填写内网IP) -->
<name>yarn.resourcemanager.hostname</name>
<value>master</value> //指定yarn的资源服务器为master
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>1</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>2048</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>2048</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enable</name>
<value>false</value>
</property>
修改slaves文件如下:
master
node1
修改hadoop-env.sh如下:
# The java implementation to use.
export JAVA_HOME=/jdk1.8.0_201
最后,注意:将上述的配置文件拷贝一份到node1对应的目录中
三、登录master节点,格式化hdfs
[root@ecs-hadoop-0001 ~]# hdfs namenode -format
hdfs的文件操作指令不同于linux,如显示hdfs中的当前目录
四、登录master节点,启动hadoop进程
[root@ecs-hadoop-0001 ~]# ./start-all.sh
完成后用jps命令,应能看到五个进程,表示正常
五、最后用put命令往hdfs中放一个文件,用wordCount自带的例子可以看到最终结果。
mapreduce的web管理端口默认为8088,请在天翼云安全组打开这个端口。大家会看到有一个dr.who的黑客帐号用mapreduce的漏洞攻击了这台主机,安全问题不容忽视。
hdfs的默认web管理端口为50070,请在天翼云安全组打开这个端口
希望以上文章能帮到您。
更多内容实时更新,请访问公众号。