Hadoop基础学习

一、hadoop集群环境建立,一个namenode 二个datanode:

[b]1.虚拟机安装Ubuntu Linux时,建立pmpa用户,如何修改root密码:[/b]
以pmpa用户登录,输入命令 sudo passwd root就可以设定root的密码了。
其实sudo是让普通用户以管理员身份来执行命令,passwd root是设定root用户密码的意思。

[b]2. 可以使用SSH远程连接Ubuntu Linux:[/b]
安装 SSH(Secure Shell) 服务以提供远程管理服务,
sudo apt-get install openssh-server就可以,Ubuntu默认是安装了openssh-clinet的了,如果安装server时报错,需要先安装对应版本的clinet才能继续安装Server(安装哪个版本的clinet需要根据日志决定)。

[b]3. 设置Ubuntu可以使用root用户使用SSH连接Linux,主要为了FTP上传文件。[/b]
(1)将 /etc/ssh/sshd_confg中PermitRootLogin no 改为yes;注释注释掉 #PermitRootLogin without-password,添加 PermitRootLogin yes。
(2)重启SSH服务 sudo service ssh restart。

[b]4. 免密码登陆设置 [/b]
在hadoop的不同结点间用ssh命令连接时,不需要输入密码直接登陆。退出ssh命令用Ctrl+D。

(1)在hadoop多个不同结点上都生成公钥:
pmpa@ubuntu:~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/pmpa/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/pmpa/.ssh/id_rsa.
Your public key has been saved in /home/pmpa/.ssh/id_rsa.pub.
The key fingerprint is:
4f:e9:df:56:9e:56:83:24:84:1b:a2:f8:38:da:52:b8 pmpa@ubuntu
The key's randomart image is:
+--[ RSA 2048]----+
| . |
| . o . |
| . . . + |
| . . . o . |
| . o S o o . |
| . + . + . .o|
| = . o o+|
| E . . ..o.|
| . ..o |
+-----------------+

(2)在生成的.ssh目录中,新建一个文件authorized_keys,在这个文件中。将不同服务器上的公钥文件(id_rsa.pub)中的内容都放在这个文件里,就可以访问了。注意:对于服务器自己,也要将自己的id_rsa.pub的内容放到自己的authorized_keys里。也就是可以无密码访问自己。
例如将namenode(192.168.58.139)的id_rsa.pub文件 拷贝到datanode(192.168.58.141)上:
pmpa@ubuntu:~/.ssh$ scp ./id_rsa.pub pmpa@192.168.58.141:/home/pmpa/.ssh/authorized_keys
pmpa@192.168.58.141's password:
id_rsa.pub 100% 393 0.4KB/s 00:00

pmpa@ubuntu:~/.ssh$ ssh 192.168.58.141
Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-32-generic x86_64)

* Documentation: https://help.ubuntu.com/
Last login: Tue Mar 31 07:28:15 2015 from 192.168.58.1

这样在从139服务器ssh到141服务器时就不需要再输入密码了。也就是说A服务器的公钥如果存在于B服务器的authorized_keys文件中时,那么从A服务器ssh到B服务器时就不再需要输入密码了。


[b]5.安装java并设置环境变量[/b]
安装java时,切换到root用户。下载jdk的tar包(oracle官网获得),解压即可,可以放在任何目录,只不过在设置环境变量时能找到这个目录即可。
修改用户目录下的.bashrc文件,加入下边2个环境变量:
export JAVA_HOME=/home/pmpa/jdk1.8.0_40
export PATH=$PATH:$JAVA_HOME/bin

加入了2个环境变量后,执行该文件.bashrc 命令:
source .bashrc

在完成了namenode的java的安装之后呢,可以将java解压的文件夹直接拷贝到datanode1和datanode2上,并且将环境变量的文件.bashrc也拷贝过去,
scp -r $JAVA_HOME datanode1:/home/pmpa
scp -r .bashrc datanode1:/home/pmpa
scp -r $JAVA_HOME datanode2:/home/pmpa
scp -r .bashrc datanode2:/home/pmpa

[b]6.网络参数配置:[/b]
(1)设置主机名:vi /etc/hostname
修改后重启系统(root用户) reboot
(补充知识点:ubuntu中的VI编辑器insert模式,按上下左右键显示ABCD字母 ,需要装下vim, sudo apt-get install vim)

设置ip(建议设置固定ip): vi /etc/sysconfig/network-scripts/ifcfg-eth0
Ip与主机名映射关系设置:vi /etc/hosts
由于Hadoop的3个结点分别命名为namenode、datanode1、datanode2,所以需要简化ssh登陆,譬如ssh namenode、ssh datanode1、ssh datanode2,需要在/etc/hosts中加入这几个ip的命名
192.168.58.139 namenode
192.168.58.141 datanode1
192.168.58.142 datanode2

[b]7.安装和配置分布式Hadoop:[/b]
(1)下载hadoop的安装包,并解压(使用pmpa账户):
tar -zxvf hadoop-2.6.0.tar.gz
(2)首先修改hadoop-env.sh,这个文件主要修改的作用是export JAVA_HOME,也就是让hadoop可以找到java,2.6.0的版本已经不需要修改了。
(3)添加环境变量 HADOOP_HOME和PATH
(4)配置core-site.xml 文件,
主要为了指定名称节点(namenode)和监听的端口号,例如:
<property>
<name>fs.default.name</name>
<value>hdfs://namenode:8980</value>
<final>true</final>
</property>
<name>fs.default.name</name>:表示这个值是用来指定名称节点在哪里,<value>hdfs://namenode:8980</value>表示名称节点会监听namenode主机的8980端口。<final>true</final> final属性表示无法被作业配置覆盖。
<property>
<name>hadoop.tmp.dir</name>
<value>/home/pmpa/hadoop-2.6.0/tmp</value>
</property>
<name>hadoop.tmp.dir</name>是为了指定hadoop的临时路径。
(5)配置hdfs-site.xml 文件:
在$HADOOP_HOME下创建2个目录name和data:mkdir name; mkdir data
用来指定namenode和datanode存储数据的目录。
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<name>dfs.replication</name>:指定HDFS系统的复制因子,这个例子中是复制2份。


(6)配置mapred-site.xml

(9)启动和验证方法:
./sbin/start-dfs.sh
./sbin/start-yarn.sh
浏览器访问:http://192.168.58.139:50070/ 其中192.168.58.139是namenode的ip,


pmpa@namenode:~/hadoop-2.6.0/sbin$ ./stop-yarn.sh
stopping yarn daemons
stopping resourcemanager
datanode2: no nodemanager to stop
datanode1: no nodemanager to stop
no proxyserver to stop

查看hdfs系统的目录内容:
hdfs dfs -ls /
hdfs dfs -mkdir /wcin

配置core-site.xml,fs.defaultFS的配置应该输入IP,我在使用hosts文件中配置的namenode会报错。

查看mysql的配置文件:
/etc/mysql/my.cnf

hive安装时报错如下:
[ERROR] Terminal initialization failed; falling back to unsupported
java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected
at jline.TerminalFactory.create(TerminalFactory.java:101)
at jline.TerminalFactory.get(TerminalFactory.java:158)
at jline.console.ConsoleReader.<init>(ConsoleReader.java:229)
at jline.console.ConsoleReader.<init>(ConsoleReader.java:221)
at jline.console.ConsoleReader.<init>(ConsoleReader.java:209)
at org.apache.hadoop.hive.cli.CliDriver.getConsoleReader(CliDriver.java:773)
at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:715)
at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:675)
at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:615)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
at org.apache.hadoop.util.RunJar.main(RunJar.java:136)

Exception in thread "main" java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected
at jline.console.ConsoleReader.<init>(ConsoleReader.java:230)
at jline.console.ConsoleReader.<init>(ConsoleReader.java:221)
at jline.console.ConsoleReader.<init>(ConsoleReader.java:209)
at org.apache.hadoop.hive.cli.CliDriver.getConsoleReader(CliDriver.java:773)
at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:715)
at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:675)
at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:615)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
at org.apache.hadoop.util.RunJar.main(RunJar.java:136)

~/hadoop-2.6.0/share/hadoop/yarn/lib
这个目录下的jline-0.9.94.jar,版本过低,用hive目录下的lib里jline-2.12.jar放在~/hadoop-2.6.0/share/hadoop/yarn/lib目录中。
cp /home/pmpa/apache-hive-1.1.0-bin/lib/jline-2.12.jar ./
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值