ubuturn16.04 下的大数据hadoop2.9.1平台搭建(一)

搭建平台:hadoop2.9.1
环境:VMware workstation虚拟机,
系统:Ubuntu 16.04.3
安装类型:Single Node Cluster(单节点簇)
 --------------------------
全程不用root身份搭建,优先使用当前用户操作。
0.查看java版本,$java -version;
1.更新软件包信息,$ sudo apt-get update;
2.用apt-get安装jdk,$ sudo apt-get install default-jdk;
3.查询Java版本,$ java -version;
4.查询Java安装路径 , $ update-alternatives --display java;
 --------------------------
设置SSH无密码登陆各个节点:
5.安装SSH,$ sudo apt-get install ssh;
6.安装rsync,$ sudo apt-get install rsync;
7.产生ssh key(密钥)进行后续身份验证, $ssh-keygen   -t dsa -P '' -f ~/.ssh/id_dsa;(这步生成的id_dsa公钥网上理论上是可以的,但是我觉得存在一些问题,建议还是生成id_rsa公钥,详细参考最后的关于最后SSH无法免密码启动问题
8.将产生的key放置到许可证文件中,$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys;
9.去hadoop官方网站下载hadoop2.9.1,选binary(二进制文件),把下载地址右键copy link location
10.回到命令台wget 粘贴下载地址;一般会下载到当前的目录,用ls命令查看一下。
11.解压缩hadoop-2.9.1.tar.gz,$ sudo tar -zxvf hadoop-2.9.1.tar.gz;
12.移动hadoop-2.9.1 目录到/usr/local/hadoop,$sudo mv hadoop-2.9.1 /usr/local/hadoop;
13.编辑~/.bashrc,$sudo gedit ~/.bashrc;在文本最后输入
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64(注意一下Java的安装版本和安装路径,参考第四步)
export HADOOP_HOME=/usr/local/hadoop(hadoop的安装路径)
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
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 HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH
14.让~/.bashrc生效,$ source ~/.bashrc;(建议重启一下系统)
15.编辑hadoop-env.sh,$ sudo gedit /usr/local/hadoop/etc/hadoop/hadoop-env.sh;
把文中的export Java-home=${java_home}
修改为:export Java-home=/usr/lib/jvm/java-7-openjdk-amd64(java的安装路径)
16.设置core-site.xml,$ sudo gedit /usr/local/hadoop/etc/hadoop/core-site.xml;
文中添加
<property>
  <name>fs.default.name</name>
  <value>hdfs://localhost:9000</value>
</property>
17.设置 YARN-site.xml,$ sudo gedit /usr/local/hadoop/etc/hadoop/yarn-site.xml;
文中添加
<property>
  <name>yarn.nodemanager.aux-services</name>
  <value>mapreduce_shuffle</value>
</property>
<property>
  <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
  <value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
18.设置mapred-site.xml,$sudo cp /usr/local/hadoop/etc/hadoop/mapred-site.xml.template /usr/local/hadoop/etc/hadoop/mapred-site.xml;、
19.编辑mapred-site.xml,$ sudo gedit /usr/local/hadoop/etc/hadoop/mapred-site.xml;
文中添加
<property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
</property>
20.编辑hdfs-site.xml,$ sudo gedit /usr/local/hadoop/etc/hadoop/hdfs-site.xml;
<property>
  <name>dfs.replication</name>
  <value>3</value>
</property>
<property>
  <name>dfs.namenode.name.dir</name>
  <value>file:/usr/local/hadoop/hadoop_data/hdfs/namenode</value>
</property>
<property>
  <name>dfs.datanode.data.dir</name>
  <value>file:/usr/local/hadoop/hadoop_data/hdfs/datanode</value>
</property>
21.创建namenode数据存储目录,$ sudo mkdir -p /usr/local/hadoop/hadoop_data/hdfs/namenode;
22.创建datanode数据存储目录,$ sudo mkdir -p /usr/local/hadoop/hadoop_data/hdfs/datanode;
23.将hadoop目录的所有者更改为本操作用户,$ sudo chown wholala:wholala(用户名:用户名)-R /usr/local/hadoop;
24.将HDFS进行格式化,$hadoop namenode -format;如果不能执行该命令,那就在hadoop安装目录下执行:bin/hdfs namenode -format。(这步非常重要!!!)
 
25.命令hadoop fs -put和hadoop fs -copyFromLocal的区别:
-put更宽松,可以把本地或者HDFS上的文件拷贝到HDFS中;而-copyFromLocal则更严格限制只能拷贝本地文件到HDFS中。
 
----------------------------------
关于最后SSH无法免密码启动问题,参考下文:
5,配置SSH无密码访问
 
Hadoop运行过程中需要管理远端Hadoop守护进程,在Hadoop启动以后,NameNode是通过SSHSecure Shell)来启动和停止各个DataNode上的各种守护进程的。这就必须在节点之间执行指令的时候是不需要输入密码的形式,所以我们需要配置SSH运用无密码公钥认证的形式,这样NameNode使用SSH无密码登录并启动DataName进程,同样原理,DataNode上也能使用SSH无密码登录到NameNode
 
1、命令:rpm qa | grep openssh
            rpm qa | grep rsync
查看是否安装ssh服务,该版本环境已经安装该服务,所以无需安装,没有的情况下需要安装。
2、配置master无密码登录所有的slave
MasterNameNode | JobTracker)作为客户端,要实现无密码公钥认证,连接到服务器SalveDataNode | Tasktracker)上时,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的Slave上。当Master通过SSH连接Salve时,Salve就会生成一个随机数并用Master的公钥对随机数进行加密,并发送给MasterMaster收到加密数之后再用私钥解密,并将解密数回传给SlaveSlave确认解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。重要过程是将客户端Master复制到Slave上。
3、Master机器上生成密码对
命令:ssh-keygen t rsa  生成其无密码密钥对,一路回车键,生成的密钥对:id_rsaid_rsa.pub,默认存储在"/home/hadoop/.ssh"目录 
命令: cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
       chmod 600 ~/.ssh/authorized_keys
命令:sudo vi /etc/ssh/sshd_config (修改SSH配置文件"/etc/ssh/sshd_config"),修改如下内容RSAAuthentication yes # 启用 RSA 认证
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)
命令:service sshd restart(重新启动服务) 
命令:ssh localhost  (测试是否成功)
4、把公钥复制到所有的slave节点上去 
命令:scp ~/.ssh/id_rsa.pub hadoop@192.168.239.129:~/(记得改成自己的ip,这个是我的slave1ip,就是把master节点的公钥发送到了slave1的根目录下了)
到这里,我的master节点的公钥已经发送到了slave1的根目录下,现在登录slave1节点,在slave1节点虚拟机上操作下面的内容
命令:chmod 700 ~/.ssh(修改.ssh权限)
命令:cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
       chmod 600 ~/.ssh/authorized_keys
        着两行命令是把master的公钥追加到Slave1.Hadoop的授权文件"authorized_keys"中去,第二行命令是修改该授权文件的权限
命令:sudo vi  /etc/ssh/sshd_config    (修改ssh配置文件,和上面master节点配置方式一样,参考下上面的步骤,在此不在重复)
  到这里,master节点已经可以无密码访问slave1节点了,现在在master节点虚拟机上操作,测试是否已经成功,命令是:ssh 192.168.239.129,如果不输入密码登录成功就说明master无密码访问slave1成功.
  
  注意:这里只是配置了master节点无密码访问slave1,还需要配置master无密码访问slave2节点、slave1无密码访问master节点、slave2无密码访问master节点,slave1无密码访问slave2节点、slave2无密码访问slave1节点。每次配置的步骤和上面讲述的master节点无密码访问slave1节点一样的,原理就是:::A若想无密码访问B,就需要把公钥发送给BBA发来的公钥添加到自己的授权文件里。
 
所有的SSH配置完毕,整个分布式的集群也就搭建完成了。
 
权限设置: chmod 700 ~/.ssh
.ssh目录权限一般为755或者700。
rsa_id.pub 及authorized_keys权限一般为600/644
rsa_id权限必须为600 
posted @ 2020-05-08 12:39  Wholala  阅读(169)  评论(0编辑  收藏  举报