从零搭建伪分布式模式hadoop集群

一、基础环境搭建

详情请见另一篇博客:https://mp.csdn.net/postedit/83112439

二、SSH设置

1、创建hadoop用户,以及权限设置

为所有节点创建hadoop用户,以后操作均在该用户下操作,操作如下:

1、useradd hadoop
2、passwd hadoop
3、sudo vim /etc/sudoers

修改内容如下:

1、root ALL=(ALL) ALL
2、hadoop ALL=(root) NOPASSWD:ALL

修改完按esc,键入:wq保存文件并退出。

然后切换到hadoop用户:

1、su hadoop

2、修改hosts文件,构建映射关系

一般,在访问局域网中的其他服务器时,需要输入难以记住的IP地址。因此,为了方便访问,我们可以在hosts文件中建立IP映射关系,这样以后访问的时候直接输入服务器名就可以了。(所有节点设置相同)

1、sudo vi /etc/hosts

在文件尾部添加如下几行:

1、192.168.1.100  master
2、192.168.1.101  slave1
3、192.168.1.102  slave2

3、ssh设置

为使节点间双向免密登录,需进行如下操作:

1、ssh-keygen -t rsa //生成master的rsa密钥,设置按回车取默认值
2、cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys //将生成的rsa追加写入授权文件
3、chmod 600  ~/.ssh/authorized_keys //给授权文件权限(只有属主有读写权限)
4、ssh maste r //进行本机ssh测试
5、sudo scp ~/.ssh/id_rsa.pub hadoop@slave1:~/ //将master上的authorized_keys传到其他slave节点
6、$cat ~/id_rsa.pub >> ~/.ssh/authorized_keys //登陆到slave1操作:$ssh slave1输入密码登陆
7、chmod 600  ~/.ssh/authorized_keys //修改authorized_keys权限(只有属主有读写权限)
8、exit //退出slave节点
9、ssh slave1 //进行免密ssh登陆测试(以slave1为例)

三、hadoop安装配置

0、装前配置

所有节点关闭防火墙以及selinux。

1、sudo systemctl stop firewalld.service //关闭
2、sudo systemctl disable firewalld.service //开机禁用
3、sudo vim /usr/sbin/sestatus //修改sestatus文件

在文件中找到SELinux status参数并设定为关闭状态:

SELinux status:                 disabled

1、hadoop安装

操作顺序:在master节点进行hadoop安装配置,之后scp到其他节点

下载Hadoop(选择自己需要binary的版本,或使用文中版本)压缩包至主机,使用Xshell(下载地址在基础环境搭建里)传到master的~/用户主目录下。

tar -zxvf ~/hadoop-2.8.1.tar.gz -C ~/hadoop/

2、hadoop的master节点配置

修改~/hadoop/etc/hadoop目录下的配置文件,core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml、slaves。

1、cd ~/hadoop/etc/hadoop
2、vi core-site.xml/hdfs-site.xml/mapred-site.xml/yarn-site.xml/slaves //这几个文件需轮流修改

配置文件内容:

1、core-site.xml  

<configuration>
  <property>
    <name>fs.default.name</name>
    <value>hdfs://master:9000</value>
  </property>
  <property>
    <name>hadoop.tmp.dir</name>
    <value>file:/home/hadoop/hadoop/tmp</value>
  </property>
</configuration>

2、hdfs-site.xml 

<configuration>
  <property>
    <name>dfs.replication</name>
    <value>2</value>
  </property>
  <property>
    <name>dfs.namenode.name.dir</name>
    <value>file:/home/hadoop/hadoop/tmp/dfs/name</value>
  </property>
  <property>
    <name>dfs.datanode.data.dir</name>
    <value>file:/home/hadoop/hadoop/tmp/dfs/data</value>
  </property>
  <property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>master:9001</value>
  </property>
</configuration>

3、mapred-site.xml  

<configuration>
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
</configuration>

4、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>
  <property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
  </property>
  <property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
  </property>
</configuration>

5、slaves

slave1
slave2

3、Hadoop的其他节点配置

由于之前已经配置过免密ssh登录节点机,故配置好的hadoop可直接由master传到其他slave节点上。

1、scp -r ~/hadoop hadoop@slave1:~/ //复制hadoop文件至slave1(其他节点类似)

4、Hadoop环境变量配置

配置环境变量需修改~/.bashrc文件,添加行(以master节点为例,其他节点类似):

#hadoop environment vars
export HADOOP_HOME=/home/hadoop/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

使环境变量生效:

1、source ~/.bashrc //使环境变量生效

四、Hadoop启动

1、hadoop namenode -format //格式化namenode
2、start-all.sh //启动hadoop
3、jps //启动后需在各节点查看启动情况

master节点jps查看启动情况:

  1. Jps XXXX(线程数,下同)
  2. ResourceManager XXXX
  3. SecondaryNameNode XXXX
  4. NameNode XXXX

slave节点jps查看启动情况:

  1. Jps XXXX
  2. NodeManager XXXX
  3. DataNode XXXX

浏览器输入127.0.0.1(或节点ip):50070,查看管理界面。

问题Tips:

布置过程中有可能出现There are 0 datanode(s) running and no node(s) are excluded in this operation这样的问题,删除dfs.namenode.name.dir设置的(file:///dfs/data)目录下的current 文件夹即可解决。(原因:地址丢失)

五、hadoop测试

使用mapreduce实现wordcount(单词计数),证明部署正确

1、echo "hadoop test." >> hadoopTest //生成文件hadoopTest
2、hadoop fs -mkdir /hadoopTestInput //创建hadoop文件夹hadoopTestInput
3、hadoop fs -put hadoopTest /hadoopTestInput //将文件hadoopTest上传至hadoopTestInput文件夹
4、hadoop jar ~/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.1.jar wordcount /hadoopTestInput /hadoopTestOutput //执行wordcount程序,并将结果放入hadoopTestOutput文件夹(/hadoopTestOutput文件夹必须是没有创建过的文件夹)
5、hadoop fs -ls /hadoopTestOutput //查看生成文件夹下的文件

1、hadoop fs -cat /hadoopTestOut/part-r-00000 //在hadoopTestOut/part-r-00000可以看到程序执行结果

参考:http://hadoop.apache.org/docs/r1.0.4/cn/cluster_setup.html

http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html

https://www.cnblogs.com/pcxie/p/7747317.html

https://blog.csdn.net/AinUser/article/details/79691101

猜你喜欢

转载自blog.csdn.net/huobaopaopao/article/details/83095073