`
Chase_Sun
  • 浏览: 8804 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Hadoop基础学习

阅读更多
一、hadoop集群环境建立,一个namenode 二个datanode:

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

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

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

4. 免密码登陆设置
在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服务器时就不再需要输入密码了。


5.安装java并设置环境变量
安装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

6.网络参数配置:
(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

7.安装和配置分布式Hadoop:
(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 ./

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics