搭建hadoop分布式集群
来源:互联网 发布:传奇登陆器源码 编辑:程序博客网 时间:2024/06/05 21:09
搭建hadoop分布式集群
- ~ jdk安装
- ip修改
- vi /etc/sysconfig/network-scripts/ifcfg-eth0
- DEVICE=eth0
- BOOTPROTO=none
- HWADDR=00:0C:29:3B:FE:E6
- ONBOOT=yes
- NETMASK=255.255.255.0
- IPADDR=192.168.129.103
- TYPE=Ethernet
- USERCTL=no
- IPV6INIT=no
- PEERDNS=yes
- GATEWAY=192.168.129.254
- service network restart
- neat或者netconfig
- 在图形界面修改
- vi /etc/sysconfig/network-scripts/ifcfg-eth0
- hostname修改
- hostname hadoop
- vi /etc/sysconfig/network
- 修改HOSTNAME=hadoop
- vi /etc/hosts
- 删除127.0.0.1和localhost,增加所有集群机器的ip和主机名
- reboot重启机器
- 增加hadoop用户
- useradd -d /home/hadoop -s /bin/bash -m hadoop
- useradd命令用来建立用户帐号和创建用户的起始目录,使用权限是终极用户
- -d:指定用户登入时的启始目录
- -m:自动建立用户的登入目录
- -s:指定用户登入后所使用的shell
- passwd hadoop
- 给hadoop用户添加权限
- vi /etc/sudoers文件: 在root ALL=(ALL) ALL 下面添加hadoop ALL=(ALL) ALL
- 相关命令
- 查看所有用户和组
cat /etc/group
cat /etc/passwd|grep -v nologin|grep -v halt|grep -v shutdown|awk -F":" '{ print $1"|"$3"|"$4 }'|more
- userdel可删除用户帐号与相关的文件。若不加参数,则仅删除用户帐号,而不删除相关文件。
- userdel -r hadoop
- 查看所有用户和组
- useradd -d /home/hadoop -s /bin/bash -m hadoop
- SHH免密码登录
- + -SSH免密码登录
如果我们希望master 结点不需要密码就能使用ssh连接到slave结点,我们需要将master结点上的~/.ssh/id_dsa.pub的内容,添加到slave结点的~/.ssh/authorized_keys这个文件中。
- 因为Hadoop需要通过SSH登录到各个节点进行操作
master生成公私钥,将公钥发给slave机器,slave保存公钥到authorized_keys
SSH无密码原理 Master(NameNode | JobTracker)作为客户端,要实现无密码公钥认证,连接到服务器Salve(DataNode | Tasktracker)上时,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的Slave上。当Master通过SSH连接Salve时,Salve就会生成一个随机数并用Master的公钥对随机数进行加密,并发送给Master。Master收到加密数之后再用私钥解密,并将解密数回传给Slave,Slave确认解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。重要过程是将客户端Master复制到Slave上。
A机器ssh登录B机器无需输入密码; 加密方式选 rsa|dsa均可以,默认dsa 做法: 1、登录A机器 2、ssh-keygen -t [rsa|dsa],将会生成密钥文件和私钥文件 id_rsa,id_rsa.pub或id_dsa,id_dsa.pub 3、将 .pub 文件复制到B机器的 .ssh 目录, 并 cat id_dsa.pub >> ~/.ssh/authorized_keys 4、大功告成,从A机器登录B机器的目标账户,不再需要密码了;
(1)CentOS默认没有启动ssh无密登录,去掉/etc/ssh/sshd_config其中2行的注释,每台服务器都要设置, vi /etc/ssh/sshd_config #RSAAuthentication yes #PubkeyAuthentication yes
(2)ssh-keygen -t rsa,生成key,都不输入密码,一直回车,~就会生成.ssh文件夹,每台服务器都要设置,
(3)合并登录方的公钥到authorized_keys文件,
- 在Master服务器,进入~/.ssh目录,通过SSH命令合并,
- cat id_rsa.pub>> authorized_keys
- ssh hadoop@192.168.0.183 cat ~/.ssh/id_rsa.pub>> authorized_keys
- ssh hadoop@192.168.0.184 cat ~/.ssh/id_rsa.pub>> authorized_keys
(4)把Master服务器的authorized_keys、known_hosts复制到Slave服务器的/root/.ssh目录
(5)完成,ssh hadoop@192.168.0.183、ssh hadoop@192.168.0.184就不需要输入密码了
注意问题
- authorized_keys的权限必须为644
- .ssh必须为711
- chmod 711 ~/.ssh
- 过高的权限不能通过ssh-add命令,过低的权限无法实现免密码登录。
- master
- 执行ssh-keygen -t rsa
- ssh-add id_rsa
- ssh-agent bash
- ssh-add id_rsa
- scp ~/.ssh/id_rsa.pub hadoop@slave1.hadoop:~/id_rsa_master.pub
- 拷贝公钥到要登录的机器
- 执行ssh-keygen -t rsa
- 要登录的slave
- cd ~
- ssh-keygen -t rsa
- 一直回车
- cat id_rsa_master.pub >> .ssh/authorized_keys
- 是否成功
- master
- ssh hadoop@slave1.hadoop如果不需要密码则成功
- 检查问题
- 文件的权限
- chmod 711 ~/.ssh
- chmod 644 ~/.ssh/authorized_keys
- 未开启无密码登录
- 去掉/etc/ssh/sshd_config其中2行的注释,双方服务器都要设置
- vi /etc/ssh/sshd_config
- #RSAAuthentication yes
- #PubkeyAuthentication yes
- 文件的权限
- master
- + -SSH免密码登录
- hadoop包解压
- tar –zxvf hadoop-2.6.0.tar.gz
- mv hadoop-2.6.0 hadoop
- chown –R hadoop:hadoop hadoop
- 设置环境变量
- vi /etc/profile
- ## -------------------JAVA------------------------##
- JAVA_HOME=/usr/java/jdk1.6.0_45
- CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
- export PATH=$PATH:$JAVA_HOME/bin
- ## -------------------HADOOP PATH------------------------##
- export HADOOP_HOME=/usr/hadoop
- export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
- 修改配置
- 配置成功后,将hadhoop复制到各个从服务器上
- scp -r /home/myhadoop/hadoop-2.7.1 myhadoop@slave1.hadoop:/home/myhadoop/
- hadoop-env.sh
- 增加JAVA_HOME变量
- export JAVA_HOME=/usr/java/jdk1.7.0_79
- core-site.xml
- 配置HDFS的ip和端口号
- fs.defaultFS
- hdfs://master.hadoop:9000
- hadoop.tmp.dir
- file:/home/myhadoop/hadoop-2.7.1/tmp
- io.file.bffer.size
- 131702
- hdfs-site.xml
- dfs.namenode.name.dir
- dfs.datanode.data.dir
- yarn-site.xml
- yarn.nodemanager.aux-services
- mapreduce_shuffle
- yarn.resourcemanager.hostname
- master.hadoop
- yarn.resourcemanager.aux-services.mapreduce.shuffle.class
- org.apache.hadoop.mapred.ShuffleHandler
- yarn.nodemanager.aux-services
- mapred-site.xml
- mapreduce.framework.name
- yarn
- mapreduce.framework.name
- 主服务器上执行bin/hdfs namenode -format
- 只能执行一次,多次执行需要修改所有节点的集群id与namenode中的一致,或者清空name和data目录
- sbin目录下执行 ./start-all.sh
sbin/hadoop-daemon.sh --config /home/myhadoop/hadoop-2.7.1/etc/hadoop --script hdfs start namenode
sbin/hadoop-daemons.sh --config /home/myhadoop/hadoop-2.7.1/etc/hadoop --script hdfs start datanode
sbin/start-dfs.sh
yarn-daemons.sh --config /home/myhadoop/hadoop-2.7.1/etc/hadoop start nodemanager
yarn-daemon.sh --config /home/myhadoop/hadoop-2.7.1/etc/hadoop start proxyserver
sbin/start-yarn.sh sbin/mr-jobhistory-daemon.sh --config /home/myhadoop/hadoop-2.7.1/etc/hadoop start historyserver
sbin/mr-jobhistory-daemon.sh --config /home/myhadoop/hadoop-2.7.1/etc/hadoop stop historyserver
- 测试
向hadoop集群系统提交一个mapreduce任务
bin/hdfs dfs -mkdir /tmp 在虚拟分布式文件系统上创建一个测试目录
tmp bin/hdfs dfs -copyFromLocal ./LICENSE.txt /tmp 将当前目录下的LICENSE文件复制到虚拟分布式文件系统中
bin/hdfs dfs -ls /tmp 查看文件系统中是否存在我们所复制的文件
运行如下命令向hadoop提交单词统计任务 bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar wordcount /tmp/LICENSE.txt /tmp-output
查看输出结果 bin/hdfs dfs -cat /tmp/*
- hadoop分布式集群搭建
- hadoop分布式集群搭建
- 搭建Hadoop分布式集群
- hadoop分布式集群搭建
- hadoop分布式集群搭建
- Hadoop分布式集群搭建
- Hadoop分布式集群搭建
- Hadoop分布式集群搭建
- Hadoop分布式集群搭建
- Hadoop分布式集群搭建
- Hadoop分布式集群搭建
- hadoop分布式集群搭建
- Hadoop分布式集群搭建
- hadoop 分布式集群搭建
- 搭建hadoop分布式集群
- hadoop分布式集群的搭建
- Hadoop 2.2 分布式集群搭建
- hadoop完全分布式集群搭建
- NDK一
- 理解addchildviewcontroller
- JSP与servlet之间的传值方式
- SecureFX 查看隐藏文件夹
- 架构师之路-优秀博客推荐1
- 搭建hadoop分布式集群
- jQuery.fileDownload.js 文件下 成功响应
- 移动端meta设置项详解
- LeetCode 15 3Sum
- JAVA中那些可爱的运算符
- 购物车完美实现
- 在线直播抓娃娃APP功能如何设计?下面详细介绍!
- Px4源码框架结构图
- postgresql 建立索引