实验室Hadoop环境搭建

Hadoop分布式集群搭建流程记录


软件环境

  • Hadoop版本:hadoop-2.7.2.tar.gz
  • JAVA版本 :jdk-8u77-linux-x64.tar.gz
  • Linux版本 :Ubuntu 15.04(64位)

主机IP

  • Master.Hadoop XX.XX.XXX.173 Master节点
  • Slave1.Hadoop XX.XX.XXX.171 工作节点1
  • Slave2.Hadoop XX.XX.XXX.201 工作节点2
  • Slave3.Hadoop XX.XX.XXX.156 工作节点3

Step1:Ubuntu基本配置

  • 添加root登录 (可选)
```code

为root账户设置密码:sudo passwd root
测试root账户: su -
输入root密码,进入root终端
图形化界面下执行: gedit /usr/share/lightdm/lightdm.conf.d
在打开的文件末尾添加如下代码,保存并退出
user-session=ubuntu
greeter-show-manual-login=true
all-guest=false
重启计算机即可使用root登录图形界面

##注意
     * 使用root登录后虽然方便,但要谨慎操作,防止误操作删除重要文件
***

 * 更新Ubuntu源

  * `gedit /etc/apt/sources.list` 打开源列表
  * 清空原有的数据,并添加如下源  
  ```code
   #搜狐源:
deb http://mirrors.sohu.com/ubuntu/ vivid main restricted universe multiverse
deb http://mirrors.sohu.com/ubuntu/ vivid-security main restricted universe multiverse
deb http://mirrors.sohu.com/ubuntu/ vivid-updates main restricted universe multiverse
deb http://mirrors.sohu.com/ubuntu/ vivid-proposed main restricted universe multiverse
deb http://mirrors.sohu.com/ubuntu/ vivid-backports main restricted universe multiverse
deb-src http://mirrors.sohu.com/ubuntu/ vivid main restricted universe multiverse
deb-src http://mirrors.sohu.com/ubuntu/ vivid-security main restricted universe multiverse
deb-src http://mirrors.sohu.com/ubuntu/ vivid-updates main restricted universe multiverse
deb-src http://mirrors.sohu.com/ubuntu/ vivid-proposed main restricted universe multiverse
deb-src http://mirrors.sohu.com/ubuntu/ vivid-backports main restricted universe multiverse
   #阿里源:
deb http://mirrors.aliyun.com/ubuntu/ vivid main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ vivid-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ vivid-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ vivid-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ vivid-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ vivid main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ vivid-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ vivid-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ vivid-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ vivid-backports main restricted universe multiverse
#网易源:
deb http://mirrors.aliyun.com/ubuntu/ vivid main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ vivid-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ vivid-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ vivid-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ vivid-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ vivid main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ vivid-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ vivid-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ vivid-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ vivid-backports main restricted universe multiverse

添加完毕保存并退出,执行sudo apt-get update以及sudo apt-get dist-upgrade

  • 修改当前机器名
  • 执行 gedit /etc/hostname 将主机名改为对应的名称(Slave1.Hadoop等)
  • 配置host文件
  • 为了让几台主机之间互相“认识”,我们必须修改主机的host,这是主机用来盘配置DNS服务的信息,记载Lan内
    各主机对应的Hostname------IP关系
  • 执行gedit /etc/hosts 以Master为例子,为每个节点加入类似如下数据:
  • XX.XX.XXX.171 Slave1.Hadoop

Step2:配置JAVA环境

  • 为所有的节点部署JAVA环境
  • 用root身份登录"Master.Hadoop"后在"/home"下创建"jdk"文件夹,再将"jdk-8u77-linux-x64.tar.gz"复制到"/home/jdk"文件夹中,然后解压即可。查看"/home/jdk"下面会发现多了一个名为"jdk-8u77-linux-x64"文件夹
    ,将其重命名为java8
  • 执行命令gedit /etc/profile打开profile文件,配置JAVA路径,在文件末尾添加如下命令:
export JAVA_HOME=/home/jdk/java8
export JRE_HOME=/home/jdk/java8/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
  • 重启Ubuntu

Step3:配置SSH实现节点之间免密码安全连接

  • 这一步的意义如下:
    • Master和Slave之间连接不能依靠手动输入密码,要在确保安全的情况下进行免密钥相互连接,所以我们要配置SSH免密码登录。
    • 原理:以Master为例1,在Master上生成一个公钥和一个私钥,默认存储在/home/username/.ssh目录下。
  • 具体操作流程:
    • 安装SSH: 执行sudo apt-get install openssh-server
    • 启动服务时候遇到了错误提示:ssh: Could not resolve hostname : Name or service not known,解决办法是在/etc/hosts里添加进该主机及对应的IP.
    • 执行: ssh-keygen命令,生成无密码密钥对。
    • 执行ls -a | grep .ssh检查是否有两个密钥。
    • 执行cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys将公钥追加授权到key里面。
    • 检查authorized_keys的权限,不对则使用chmod 600 authorized_keys命令修改权限。
    • 检查sshd_config文件(gedit /etc/ssh/sshd_config),看下列三行是否注释掉,没注释掉则注释:

RSAAuthentication yes # 启用 RSA 认证
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
AuthorizedKeysFile %h/.ssh/authorized_keys # 公钥文件路径

  * 重启SSH服务,执行`service ssh restart`
  * 将公钥拷贝到要实现免密码登录的远程主机上:执行`ssh-copyid root@Slave1.HAdoop`拷贝到Slave1节点(本机是Masgter)
  * 验证免密码登录:
     * 本机执行`ssh root@Slave1.Hadoop`即可免密码登录Slave1
  * 其他节点之间同理操作,下面附上Slave2.Hadoop远程免密钥登录Master节点截图:

![Slave2.Hadoop远程Master](http://upload-images.jianshu.io/upload_images/1863312-6dbd97ed27900622.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
***
#Step4:Hadoop集群部署
* 实验室配置路径交代:
  * 以Master配置为例,解压Hadoop,放在`/usr/hadoop`位置。
* 在"**/usr/hadoop**"下面创建**tmp**文件夹,并把Hadoop的安装路径添加到"**/etc/profile**"中
   *  执行`gedit /etc/profile`,在最下面加上如下命令:
```code
# set hadoop path
export HADOOP_HOME=/usr/hadoop
export $Path=$PATH:$HADOOP_HOME/bin
  • 下面进行Hadoop的配置,需要配置的文件在/usr/hadoop/etc/hadoop
    • 分别是slaves、core-site.xml、hadfs-site.xml、mapred-stie.xml、yarn-stie
    • slaves: 将作为 DataNode 的主机名写入该文件,每行一个(Master可以作为工作节点)
      Master节点的salves
    • core-site.xml 改为下面的配置:
<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://Master.Hadoop:9000</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/usr/hadoop/tmp</value>
                <description>Abase for other temporary directories.</description>
        </property>
</configuration>
  • 文件 hdfs-site.xml,默认的工作节点数(一个子节点则设为1):
<configuration>
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>Master:50090</value>
        </property>
        <property>
                <name>dfs.replication</name>
                <value>1</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>/usr/hadoop/tmp/dfs/name</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>/usr/hadoop/tmp/dfs/data</value>
        </property>
</configuration>
  • mapred-site.xml (先重命名,去掉.template),配置修改如下:
<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.address</name>
                <value>Master:10020</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>Master:19888</value>
        </property>
</configuration>
  • 文件 yarn-site.xml
<configuration>
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>Master.Hadoop</value>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
</configuration>
  • 配置完成后,将Master上的/usr/hadoop文件上传到各个节点上,执行命令;
cd /usr
sudo rm -r ./hadoop/tmp     # 删除 Hadoop 临时文件
sudo rm -r ./hadoop/logs/*   # 删除日志文件
tar -zcf ~/hadoop.master.tar.gz ./hadoop   # 先压缩再复制
cd ~
scp ./hadoop.master.tar.gz Slave1.Hadoop:/usr/hadoop

在Slave1.Hadoop上执行:

sudo rm -r /usr/hadoop    # 删掉旧的(如果存在)
sudo tar -zxf ~/hadoop.master.tar.gz -C /usr
sudo chown -R hadoop /usr/hadoop

另外你也可以使用U盘进行拷贝(亲测)

  • 首次启动需要再Master上执行hdfs namenode -format对NadmeNode格式化
  • 启动Hadoop:
start-all.sh   #这个可执行文件在`/usr/hadoop/sbin`下

通过命令 jps可以查看各个节点所启动的进程。正确的话,在 Master 节点上可以看到 如下进程:

测试启动结果

Slave节点可以看到如下进程:
Slave节点查看验证

注意:缺少进程代表出现问题,另外还需要在 Master 节点上通过命令 hdfs dfsadmin -report查看 DataNode 是否正常启动,如果 Live datanodes 不为 0 ,则说明集群启动成功。


  • 通过Web页面查看hadoop集群:
通过Web查看集群
节点Slave2在线
通过Web查看集群

今后将分享Hadoop分布式集群的使用过程,406-让我们共同成长。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容